feat(stmate-test): REA MCP(Ghidra) 파일 입출력 — JDL 탭 줄·묶음 내보내기·검사 · 구버전→Win8 변환 · 엑셀 역등록 구성 줄 · 자재 집계표 엑셀 · 그림 코드

- JDL 줄 = 탭 구분 + \x05/\x07 덧붙임(검사기 0x504d20 · 고정폭 표는 죽은 고리 — 34 §17.9 바로잡음) · 단가 목록 7종·Main·GongJong 머리·Global.Ini 상수 키 · zip 받기
- 구버전 판 가리기(Chk_Data 0x459280) · 7.x/DOS 표별 필드 대응 · B→X 조건 = 단위 X
- 엑셀 역등록 PRPT「속성」·PRIN「대상」·PROUT「저장」 = PR/RR 줄만 · 원본 BDQTY 4건 일치
- 자재 = 재료비 수량집계표 엑셀 내보내기(주요건설자재현황 시트)
- 그림 코드 = COSTN I 코드 IFORM · SIZE = 그림 클래스 이름
- 지식DB 37번

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-14 15:58:17 +09:00
co-authored by Claude Opus 5.5
parent 9734b6490d
commit 47a04b6df8
25 changed files with 6025 additions and 81 deletions
@@ -0,0 +1,118 @@
# 37 파일 입출력 잔여 — JDL · 구버전 변환 · 엑셀 역등록 · 자재 XLS · 그림 코드 정적 분석
## 0. 범위·방법·한계
- 대상 장부 항목: F4-23 · F4-28 · F4-25 · F4-26 · F1-54.
- 방법: 원본 바이트 읽기만. Ghidra 12.1.4(rea-agents 6.7.0) 디컴파일 · capstone 역어셈블 · import 표.
- 원본 실행·패치 없음. 구버전(DOS·7.x) 자료 표본 없음 → 규칙에서 만든 합성 자료로만 시험.
- 확신도: 확인 = 명령·상수·문자열로 바로 읽힘 · 조건부 = 추론 섞임 · 미확인 = 근거 못 찾음.
- 주소는 VA. 근거 창은 `evidence/`.
| 대상 | 경로 |
|---|---|
| ST_U_Convert.CPM | System/ST_CPM (sha256 0166beb6…) |
| JDLCHK.Tab_33.dll | System (sha256 c5052736…) |
| STmate.Cpm · ST_P_XLS.CPM · ST_U_Archive.CPM · DP_Common.CPM | System · System/ST_CPM |
## 1. 조달청 JDL TEXT (F4-23) — 줄 형식 바로잡음 · 단가 목록 확인 · 세부 미해독
### 1.1 34 §17.9 바로잡음 — 고정폭 아님 · 탭 구분 — 확인
- JDLCHK.Tab_33 0x5051e0 = 자리 표(0x405dd8 뒤 dword)에 탭 넣기. 고리 앞 0x505218 `jmp 0x505242` 가 고리를 건너뜀 → 죽은 표 · 줄은 그대로.
- 0x504d20 줄 나눔:
- 첫 `\x05` 자리에서 둘로. 없으면 줄 전체가 앞쪽.
- 앞쪽 + " " 를 탭(#9)으로 나눔 · 조각마다 Trim(#0~#32 걷음) → 열 배열(최대 50).
- 뒤쪽 + " " 를 `\x07`(0x504f30) 로 나눔 → STmate 덧붙임 칸(최대 100) · 조건부(둘째 고리 끝까지 안 읽음).
- 열 개수 검사 = 앞쪽 배열 길이(cmp 값 34 §17.9 표와 같음). L.Txt 오류 번호 203002.
- 만드는 쪽 값 글: FUN_004a7cf0 — 실수는 FloatToStr 뒤 EXTTOSTR(DP_Common 0x453e4c · 지수꼴 풀어 씀) · 그 밖 TrimRight · dl=1 이면 뒤에 탭.
- 참거짓 칸 글(UC) = Delphi 6 Variant 글 'True'/'False' — 조건부.
### 1.2 만드는 쪽 — ST_U_Convert Conv_ST8_Jodal 0x4b9f2c — 확인
- 계열(0x4ba06e): PRJLST PCLASS 0→1 · 3→2 · 4·5·6·7·9→1 · 그 밖은 앞 계열 그대로(미확인).
- 코드 차례: COSTN `SUBSTR(CODE,1,1)$"LMSWI"`(0x4bb622) → `"BXD"`(0x4bb696). 해당분 모드는 CONBD 등 사용 목록(0x4bac11). 같은 표 안 차례 = 열린 색인(미확인).
- 줄 함수: 0x4b0904(쓰임 · [ebp-0x186d]=1 고정 0x4ba725) · 0x4a89dc(고정폭 옛 꼴 · 죽은 길).
- 코드 기록 FUN_00431758: CODE +8 · NAME +0x39 · SIZE +0x9f · UNIT +0x119(X 코드면 「시간」) · EQCODE +0x1b · BQCODE +0x128.
- 계열 s 묶음 +0x130+0x30s: 노무 = M·S 코드면 0 아니면 LAMTs · 재료 = L·S 면 0 아니면 MAMTs · 경비 = L·M 면 0 아니면 SAMTs · 합 = 셋 더함(0x432d7e~0x432f62).
- 단위 손질: Trim 「$」→「$」 · L·M·S·W 의 「T%」→「T%*100」 · B·X·D 의 대문자 「L.S.」「P.S.」→ 단위+「3」.
- 마지막 덧붙임 칸 = GUN(필드 GUN·BAMT~ZAMT 가 다 있고 M·S 코드) 아니면 " ".
| 첫 글자 → 파일 | 열(탭) | 덧붙임(\x05 뒤 \x07 사이) |
|---|---|---|
| L → L.Txt | CODE · NAME · SIZE · UNIT · 노무 · EQCODE · 빈 | BQCODE · UC · AMT_1s~AMT_5s · 끝칸 |
| M → M.Txt | CODE · NAME · SIZE · UNIT · 재료 · EQCODE · (AMT_ns · PG_ns)×5 · 빈 · 빈 · 빈 | BQCODE · UC · AMT_1s~5s · PG_1s~5s · PG_J · PG_s · 끝칸 |
| S → E.Txt | CODE · NAME · SIZE · UNIT · 0 · 0 · 경비 · EQCODE · 빈 | BQCODE · UC · 끝칸 |
| W → W.Txt | CODE · NAME · SIZE · UNIT · 재료 · 노무 · 경비 · EQCODE · 빈 | BQCODE · UC (+ 기록 +0x254≠0 이면 2칸 · GUN 필드 있으면 BAMTs~ZAMTs — 미구현) |
| B → Unit.Txt · X → JUnit.Txt · D → Danga.Txt | CODE · NAME · SIZE · UNIT · 재료 · 노무 · 경비 · EQCODE · 빈 · 빈 | BQCODE · UC |
| I → IMG.DBF | `CODE="<코드>"` 로 COSTN.DBF 에서 AppendFrom(0x4b0b40) | — |
- Main.TXT(0x4bc1a9): PNUM · PNAME(탭→빈칸 · TrimRight) · 「02」.
- GongJong.TXT 머리 줄(PRIV_PR 거짓일 때 · 0x4bc4f3): 「01」 · PNAME · 「1」 · 빈 / 덧붙임 빈 · False · 빈 · 빈 · 빈 · 「0」. 본문 = 0x4b6378(BOQ 줄마다) — 미해독.
- Global.Ini: [BASIC] MAKER=STM · CDATE=yyyyMMdd · VERSION=(프로그램 판 · 미확인) · JDL VERSION=3.3 / [COST] LCOST·MCOST·ECOST(=SCOSTs)·TCOST(PRJLST GetString 글 — 앞 빈칸 처리 조건부) / [CPART] PPBIT=2C · MQBIT=4C · MABIT=0C · MTBIT=0C · UQBIT=6C · JQBIT=6C · DRBIT=11R · DTBIT=0C(나머지 키는 설정값 · 미확인) / [PPART] · 환율 키 — 미확인.
- 참고 표: DANGA.DBF(CODE C11 · NAME C30 · SIZE C30 · UNIT C6 · MPRC·LPRC·EPRC N19.6 · LINK C11 · FORM·REMARKS·EXPN M · COMPEXC N2) · IMG.DBF(CODE C6 · NAME C50 · SIZE C60 · BQCODE C20 · IFORM M).
- 검사 0x4b9700 → JDLCHK.Tab_33 JDLCheck · 압축 .JDL = ST_U_Archive 압축 형식 미확인.
### 1.3 세부 3종 열 이름 — 확인(일부 조건부)
| 파일 | 열 차례 → 필드 |
|---|---|
| MainPart(31) 0x4f7890 | 0 CODE · 1 CODE1(앞 묶음+1열 · 조건부) · 2 DES · 3 SIZE · 4 UNIT · 5 QQTY · 6 MPRICE · 7 LPRICE · 8 EPRICE · 9 미확인 · 10 SPROPER(앞 2자) · 11 LOADBM · 12 SAVEBM · 13 SRATE · 14 KWAN · 15 SCOST · 16 SGUBUN · 17 SCODE · 18 SANQTY · 19~28 LCODE1/LQTY1~LCODE5/LQTY5 · 29 LRATE · 30 SAN |
| UnitPart(28) 0x4fa7fc | 0 CODE · 1 CODE1 · 2 DES · 3 SIZE · 4 UNIT · 5 QQTY · 6~8 M·L·EPRICE · 9 미확인 · 10 SPROPER · 11 LOADBM · 12 SAVEBM · 13 SRATE · 14 KWAN · 15 SANQTY · 16~25 LCODE·LQTY · 26 LRATE · 27 SAN · MCOST·LCOST·ECOST 는 셈 |
| JPart(19) 0x4fdd10 | 0 CODE · 1 CODE1 · 2 미확인 · 3 DES · 4 SIZE · 5 UNIT · 6 QQTY · 7~9 M·L·EPRICE · 10 미확인 · 11 SPROPER · 12 LOADBM · 13 SAVEBM · 14 SRATE · 15 KWAN · 16~18 미확인 |
- 검사기가 따로 채움: F_SEQ(줄 번호 10자리) · F_ORICODE(0열) · F_CLASS.
## 2. 구버전 → Win8 (F4-28) — 차례·필드 대응 확인 · 간접비·요율 미확인
- 판 가리기 Chk_Data 0x459280(파일 이름 묶음 · 처음 맞는 규칙): 140 STINI.MEM·RATE·QCODE / 130 START8X.INI·RATE·QCODE / 120 START.INI·FORM·KANJUB2·IMG.DB / 110 START.MEM·FORM·KANJUB2·COSTN1 / 150 START8X·COSTA·COSTN.SMT·PRJLST.SMT·SYSINFO / 200 조달청 TEXT 묶음.
- 안 맞으면 COSTN·BDQTY·PRJLST 중 하나라도 있으면 100 · 150·200 밖은 COSTN·BDQTY·PRJLST·GRASS 다 있어야(없으면 100).
- Chk_STDir 0x45a957: 120·130·140 + [PROJECT] PMODE(기본 1) · 110 → 111.
- ConvToWin8 0x459a11: 110~119 DOS 0x45a8d4 · 120~129 7.x 0x459e68 · 130~149 「이미 STmate 2Y.m 자료로 변환된 데이타입니다」 · 200 조달청 0x475ee4.
- 차례: Tmp-yyyy_mmdd_hhnn → 원본 COSTN BAMT~KAMT 여덟 열 검사(0x4865d8 · 34 §13 「금액열 정리」 바로잡음) → 빈 표(COSTN·BDQTY·BOQ·BQM·PRJLST·KONGJONG · SYSINFO 0x4362b4 · RATE 0x47a9f4 · RATE_RA·RATE_M 틀) → 7.x(Memo.Ini 복사 · COSTN · BDQTY · PRJLST · KONGJONG · BOQ<PCODE> · BQM<PCODE> · Start8x.Ini → STini.MEM 복사) / DOS(Start.MEM → Start8x.Ini 먼저 · COSTN · BDQTY · PRJLST(iTMP) · KONGJONG 7행 · BOQ<PCODE>) → OLD-yyyy_mmdd_hhnn 보관 또는 지움 → BDQTY 암호(0x434e2c) → 옮김.
- 복사 규칙: 원본·대상 둘 다 있는 필드만.
- COSTN 7.x 0x4882a4(63쌍 · 0x58af10→0x58ae14) · DOS 0x490cb8(35쌍) · 행 = 첫 글자 MLSWBD · 단위 첫 글자 LMST + 둘째 '%' → 앞 5칸만 · GUN 'H…' → 'Z' · HAMT → ZAMT · GAMT 는 대상 열 없음(버려짐).
- DOS M 코드: COSTN1.DBF AMT_A~F → AMT_12·22·32·11·21·31 · PG_A~F 같은 차례 · PG_J.
- 중기 B→X(7.x 0x48856e · DOS 0x490fc2): CODE 첫 글자 B 이고 Trim(UpperCase(UNIT)) = 'X' → 'X'+CODE[2..6]. 34 §13 「시간·HR 제외」는 안내 글 · 실제 조건은 단위 X.
- BDQTY 0x489448: BDCODE 첫 글자 BDX · BDCODE·CODE 가 COSTN 코드 목록(또는 CODE 가 T·E·C+정수) · T_NAME→NAME1 · T_SIZE→SIZE1 · QTY→QTY1 · BIMOK · DEVD→DEVD1 · B·S 줄 X_QTY1=QTY · X_HAL1~3=100 · T_EXIST → EXIST1=1 · IMGINFO DCODE·ICODE 행.
- PRJLST 7.x 0x48c890(29쌍 · 원가 칸 한 칸씩 밀림 · XXXNM~KXXNM → XX1NM~XX4NM · K_ORD 고침) · DOS 0x49379c(18쌍).
- KONGJONG 0x48cbf0: 7.x = DESCRIP→NAME · DESSIZE→SIZE · CODE=레코드 번호 / DOS = 고정 7행.
- BOQ 7.x 0x48d58c(34쌍) · DOS 0x493e78(30쌍 · DESCRIP·DESSIZE) · BQM 0x48dc38(12쌍).
- Start8x.Ini 7.x 0x48e07c 키 대응 · DOS Start.MEM(Clipper 변수 머리 32바이트) → 0x44d370 · [START] 34키 표(0x588294)는 실행 중 채워져 이름 미확인.
- 미확인: 간접비 이관(0x48abb0 · 0x4922e4) · RATE 행 대응 · SYSINFO(암호) · IFORM 산출식(FORM.DBF · Tran_SAN_Format · 0x4905d0) · IMG.DB 그림 · 원본 BDQTY 암호 열쇠.
## 3. 엑셀 역등록 구성 줄 (F4-25) · 자재 XLS (F4-26) — 확인
### 3.1 ST_P_XLS 0x5f1078 (CONV_XLS_2_ST 안 · 중기비 0x5f9857 → 일위대가 0x5f9d90)
- 목록표 줄 차례 · INFO `DET` = 구성표 머리 줄 번호 · 그 머리 줄 POSS~POSE · BDCODE = 목록 COD.
- INFO 첫 글자 0x07 인 줄만 AppendBlank.
- BDCODE · CODE · NAME1 · SIZE1 · EXIST1(EXI) → 코드가 PR·RR·QTY 이거나 둘째 글자 숫자일 때만 다음으로.
- 첫 글자 C·E·T → EXIST1=0 만 · A B D L M P Q R S W X → QTY1(MROUNDUD 7자리) · UNIT1 · DEVD1(DVD='T') · BIMOK · PRPT(IPR).
- D 줄만 SPRPT·SBMOK·TPRPT · PR/RR 줄만 UNIT1(UNI) · EQCODE · PRIN(PRI) · PROUT(PRO) · M 줄만 KWNGP · 모든 줄 BL_AMT(BLA='T').
- 뜻(ST_Boq TWBOQ · TWM_EDIT_ILWI 머리): PRPT 「속성」 0~99 · PRIN 「대상」 0 빈칸·1 재료비·2 노무비·3 경비·4 합계 · PROUT 「저장」 · KWNGP 「관급」 0·1 관급·2 별산 · 비율 줄 UNIT1 「절사(미만)」.
- 중기 X 구성 줄: PRPT = IPR(없으면 0) · PRIN·PROUT 는 AppendBlank 그대로 0.
### 3.2 wM_JajeXLS = 「재료비 수량집계표를 엑셀파일로 만들기」(TWM_JAJEXLS 0x698df0) — 내보내기만
- 공사목록 ActMkJaje 0x5658bc(「워크쉬트작업」): 제잡비 계산 확인(QXXNM=ADD_PER) → CON_QTY<공사> 의 B_CODE 첫 글자 M → PRT · 없으면 「…에 인쇄할 코드가 없습니다.」 → 대화창 → ST_P_XLS MAKE_XLS → Prn_Col_M_EXL 0x4eb4d0 → SHOW_XLS.
- 대화창 8칸: 공사명=PNAME · 관리번호=PNUM · 예산액=COSTW<차수>(「₩#,0원」) · 수요기관·시공회사·공사현장·공사기간·계약일자 빈칸.
- 시트 「주요건설자재현황」 · 2~5줄 공사 정보 · 7줄 머리글 [PRINT] CAP_NAME~CAP_BIGO(기본 「명 칭」…「비 고」) · 열 너비 31·31·12·6·12·14·12.
- 줄: 명칭(+NAME2) · 규격(+SIZE2) · 수량 = B_QTY<차수> 소수 2자리 사사오입 · 단위 · 단가 = 차수 합계(조건부) · 금액 = 사사오입 · 비고 빈칸 · 65,000 줄 넘으면 새 시트.
- 들여오기 길 없음 · 파일 이름 기본값 미확인.
## 4. 그림 코드 (F1-54) — 확인
- 표 = COSTN(조달청 변환이 COSTN.DBF 의 I 코드 행을 IMG.DBF 로 옮김 · 35 §6 「표 이름 미확인」 풀림).
- 넣기 SpeedButton2Click 0x514df0: 파일 열기 · 비트맵이면 「비트맵 => JPEG 변환 저장」(변환저장 · 비트맵저장 · 저장취소) · 그 밖 「그림저장」.
- 저장 0x514bc0~0x514d30: NAME 이 비면 파일 이름(확장자 뺌) · SIZE = UpperCase(그림.ClassName) = TJPEGIMAGE · TBITMAP · TICON · TMETAFILE · IFORM = 그림 스트림(LoadFromStream) · Commit.
- 새 코드 0x4dac10: 사용자가 친 코드 · 이름 「새로운 그림코드」.
- 보기 0x5155a8: SIZE(대문자 · 길이 > 2) 꼴로 IFORM 을 읽음.
- 조건부: TBitmap·TMetafile SaveToStream 재기록 바이트 · 비트맵→JPEG 부호기(TJPEGImage 기본 품질 90).
## 5. 재현 앱 반영 (tools/stmate-test)
- jdl_format.py(탭 꼴 · 검사기 나눔) · jdl_export.py · api_jdl.py · scr_jdl.js
- conv_win8.py · conv_win8_ini.py · api_conv.py(/api/conv/win8 · win8-check) · scr_win8.js
- conv_xls_res.py(구성 줄 규칙) · conv_jaje.py · api_conv.py(/api/conv/jaje-sum-xlsx) · scr_jaje.js
- img_code.py · api_img.py · scr_img.js
- 시험: test_stmate_jdl_rea · test_stmate_conv_win8 · test_stmate_conv_jaje · test_stmate_conv_xls(구성 줄 원본 BDQTY 대조) · test_stmate_img_code
@@ -0,0 +1,107 @@
0x504d20: push ebp
0x504d21: mov ebp, esp
0x504d23: xor ecx, ecx
0x504d25: push ecx
0x504d26: push ecx
0x504d27: push ecx
0x504d28: push ecx
0x504d29: push ecx
0x504d2a: push ecx
0x504d2b: push ecx
0x504d2c: push ecx
0x504d2d: push ebx
0x504d2e: push esi
0x504d2f: push edi
0x504d30: mov esi, edx
0x504d32: mov dword ptr [ebp - 4], eax
0x504d35: mov eax, dword ptr [ebp - 4]
0x504d38: call 0x404c70 <>
0x504d3d: xor eax, eax
0x504d3f: push ebp
0x504d40: push 0x504ef6
0x504d45: push dword ptr fs:[eax]
0x504d48: mov dword ptr fs:[eax], esp
0x504d4b: push 0x32
0x504d4d: mov eax, esi
0x504d4f: mov ecx, 1
0x504d54: mov edx, dword ptr [0x4e6134]
0x504d5a: call 0x405dd8 <>
0x504d5f: add esp, 4
0x504d62: push 0x64
0x504d64: lea eax, [esi + 4]
0x504d67: mov ecx, 1
0x504d6c: mov edx, dword ptr [0x4e615c]
0x504d72: call 0x405dd8 <>
0x504d77: add esp, 4
0x504d7a: mov edx, dword ptr [ebp - 4]
0x504d7d: mov eax, 0x504f0c
0x504d82: call 0x404dc4 <>
0x504d87: mov ebx, eax
0x504d89: test ebx, ebx
0x504d8b: jne 0x504d98
0x504d8d: mov eax, dword ptr [ebp - 4]
0x504d90: call 0x404a80 <>
0x504d95: mov ebx, eax
0x504d97: inc ebx
0x504d98: lea eax, [ebp - 0x14]
0x504d9b: push eax
0x504d9c: mov ecx, ebx
0x504d9e: dec ecx
0x504d9f: mov edx, 1
0x504da4: mov eax, dword ptr [ebp - 4]
0x504da7: call 0x404ce0 <>
0x504dac: mov edx, dword ptr [ebp - 0x14]
0x504daf: lea eax, [ebp - 8]
0x504db2: mov ecx, 0x504f18 ; " "
0x504db7: call 0x404acc <>
0x504dbc: lea eax, [ebp - 0x18]
0x504dbf: push eax
0x504dc0: mov eax, dword ptr [ebp - 4]
0x504dc3: call 0x404a80 <>
0x504dc8: mov ecx, eax
0x504dca: lea edx, [ebx + 1]
0x504dcd: mov eax, dword ptr [ebp - 4]
0x504dd0: call 0x404ce0 <>
0x504dd5: mov edx, dword ptr [ebp - 0x18]
0x504dd8: lea eax, [ebp - 0xc]
0x504ddb: mov ecx, 0x504f18 ; " "
0x504de0: call 0x404acc <>
0x504de5: xor edi, edi
0x504de7: xor eax, eax
0x504de9: mov dword ptr [ebp - 0x10], eax
0x504dec: jmp 0x504e47
0x504dee: mov edx, dword ptr [ebp - 8]
0x504df1: mov eax, 0x504f24 ; " "
0x504df6: call 0x404dc4 <>
0x504dfb: mov ebx, eax
0x504dfd: test ebx, ebx
0x504dff: jne 0x504e0b
0x504e01: mov eax, dword ptr [ebp - 8]
0x504e04: call 0x404a80 <>
0x504e09: mov ebx, eax
0x504e0b: lea eax, [ebp - 0x20]
0x504e0e: push eax
0x504e0f: mov ecx, ebx
0x504e11: dec ecx
0x504e12: mov edx, 1
0x504e17: mov eax, dword ptr [ebp - 8]
0x504e1a: call 0x404ce0 <>
0x504e1f: mov eax, dword ptr [ebp - 0x20]
0x504e22: lea edx, [ebp - 0x1c]
0x504e25: call 0x40910c <>
0x504e2a: mov edx, dword ptr [ebp - 0x1c]
0x504e2d: mov eax, dword ptr [esi]
0x504e2f: lea eax, [eax + edi*4]
0x504e32: call 0x404814 <>
0x504e37: lea eax, [ebp - 8]
0x504e3a: mov ecx, ebx
0x504e3c: mov edx, 1
0x504e41: call 0x404d20 <>
0x504e46: inc edi
0x504e47: cmp dword ptr [ebp - 8], 0
0x504e4b: jne 0x504dee
0x504e4d: push edi
0x504e4e: mov eax, esi
0x504e50: mov ecx, 1
0x504e55: mov edx, dword ptr [0x4e6134]
0x504e5b: call 0x405dd8 <>
@@ -0,0 +1,55 @@
0x5051e0: push ebp
0x5051e1: mov ebp, esp
0x5051e3: add esp, -8
0x5051e6: push ebx
0x5051e7: push esi
0x5051e8: mov esi, ecx
0x5051ea: mov dword ptr [ebp - 8], edx
0x5051ed: mov dword ptr [ebp - 4], eax
0x5051f0: mov eax, dword ptr [ebp - 4]
0x5051f3: call 0x404c70 <>
0x5051f8: mov eax, dword ptr [ebp - 8]
0x5051fb: call 0x405f68 <>
0x505200: xor eax, eax
0x505202: push ebp
0x505203: push 0x505266
0x505208: push dword ptr fs:[eax]
0x50520b: mov dword ptr fs:[eax], esp
0x50520e: mov eax, esi
0x505210: mov edx, dword ptr [ebp - 4]
0x505213: call 0x404814 <>
0x505218: jmp 0x505242
0x50521a: mov eax, dword ptr [ebp - 8]
0x50521d: call 0x405bfc <>
0x505222: mov ebx, eax
0x505224: dec ebx
0x505225: cmp ebx, 0
0x505228: jl 0x505242
0x50522a: mov eax, dword ptr [ebp - 8]
0x50522d: mov ecx, dword ptr [eax + ebx*4]
0x505230: mov edx, esi
0x505232: mov eax, 0x50527c ; " "
0x505237: call 0x404d68 <>
0x50523c: dec ebx
0x50523d: cmp ebx, -1
0x505240: jne 0x50522a
0x505242: xor eax, eax
0x505244: pop edx
0x505245: pop ecx
0x505246: pop ecx
0x505247: mov dword ptr fs:[eax], edx
0x50524a: push 0x50526d
0x50524f: lea eax, [ebp - 8]
0x505252: mov edx, dword ptr [0x4e61ac]
0x505258: call 0x405f04 <>
0x50525d: lea eax, [ebp - 4]
0x505260: call 0x4047c0 <>
0x505265: ret
0x505266: jmp 0x404070
0x50526b: jmp 0x50524f
0x50526d: pop esi
0x50526e: pop ebx
0x50526f: pop ecx
0x505270: pop ecx
0x505271: pop ebp
0x505272: ret
@@ -0,0 +1,857 @@
0x5f1078: push ebp
0x5f1079: mov ebp, esp
0x5f107b: mov ecx, 0x30
0x5f1080: push 0
0x5f1082: push 0
0x5f1084: dec ecx
0x5f1085: jne 0x5f1080
0x5f1087: push ebx
0x5f1088: push esi
0x5f1089: push edi
0x5f108a: mov ebx, eax
0x5f108c: mov edi, dword ptr [ebp + 8]
0x5f108f: add edi, 0xfffff97c
0x5f1095: xor eax, eax
0x5f1097: push ebp
0x5f1098: push 0x5f161c
0x5f109d: push dword ptr fs:[eax]
0x5f10a0: mov dword ptr fs:[eax], esp
0x5f10a3: lea eax, [ebp - 0x14]
0x5f10a6: push eax
0x5f10a7: imul eax, ebx, 0x15
0x5f10aa: mov edx, dword ptr [ebp + 8]
0x5f10ad: mov edx, dword ptr [edx + eax*4 - 0x5ec]
0x5f10b4: mov eax, dword ptr [ebp + 8]
0x5f10b7: mov eax, dword ptr [eax - 0x660]
0x5f10bd: xor ecx, ecx
0x5f10bf: call 0x5ecc38
0x5f10c4: lea edx, [ebp - 0x14]
0x5f10c7: mov eax, dword ptr [ebp + 8]
0x5f10ca: add eax, 0xfffff9c0
0x5f10cf: call 0x4013f8
0x5f10d4: mov eax, dword ptr [ebp + 8]
0x5f10d7: cmp dword ptr [eax - 0x640], 0
0x5f10de: je 0x5f15af
0x5f10e4: mov eax, dword ptr [ebp + 8]
0x5f10e7: mov eax, dword ptr [eax - 0x640]
0x5f10ed: cmp byte ptr [eax], 7
0x5f10f0: jne 0x5f15af
0x5f10f6: mov eax, dword ptr [edi]
0x5f10f8: call 0x40247c
0x5f10fd: mov eax, dword ptr [ebp + 8]
0x5f1100: push eax
0x5f1101: lea eax, [ebp - 0x24]
0x5f1104: push eax
0x5f1105: mov ecx, 0x5f1634
0x5f110a: xor edx, edx
0x5f110c: mov eax, 0x5f1640 ; "`COD|"
0x5f1111: call 0x5ee6d8
0x5f1116: pop ecx
0x5f1117: lea edx, [ebp - 0x24]
0x5f111a: lea eax, [ebp - 4]
0x5f111d: call 0x4013f8
0x5f1122: lea eax, [ebp - 0x34]
0x5f1125: mov edx, dword ptr [ebp + 8]
0x5f1128: mov edx, dword ptr [edx - 0x688]
0x5f112e: call 0x401440
0x5f1133: lea ecx, [ebp - 0x34]
0x5f1136: mov eax, dword ptr [edi]
0x5f1138: mov edx, 0x5f1650 ; "BDCODE"
0x5f113d: call 0x4025ec
0x5f1142: lea eax, [ebp - 0x44]
0x5f1145: mov edx, dword ptr [ebp - 4]
0x5f1148: call 0x401440
0x5f114d: lea ecx, [ebp - 0x44]
0x5f1150: mov eax, dword ptr [edi]
0x5f1152: mov edx, 0x5f1660 ; "CODE"
0x5f1157: call 0x4025ec
0x5f115c: lea eax, [ebp - 0x54]
0x5f115f: push eax
0x5f1160: imul esi, ebx, 0x15
0x5f1163: mov eax, dword ptr [ebp + 8]
0x5f1166: mov edx, dword ptr [eax + esi*4 - 0x634]
0x5f116d: mov eax, dword ptr [ebp + 8]
0x5f1170: mov eax, dword ptr [eax - 0x660]
0x5f1176: xor ecx, ecx
0x5f1178: call 0x5ecc38
0x5f117d: lea ecx, [ebp - 0x54]
0x5f1180: mov eax, dword ptr [edi]
0x5f1182: mov edx, 0x5f1670 ; "NAME1"
0x5f1187: call 0x4025ec
0x5f118c: lea eax, [ebp - 0x64]
0x5f118f: push eax
0x5f1190: mov eax, dword ptr [ebp + 8]
0x5f1193: mov edx, dword ptr [eax + esi*4 - 0x630]
0x5f119a: mov eax, dword ptr [ebp + 8]
0x5f119d: mov eax, dword ptr [eax - 0x660]
0x5f11a3: xor ecx, ecx
0x5f11a5: call 0x5ecc38
0x5f11aa: lea ecx, [ebp - 0x64]
0x5f11ad: mov eax, dword ptr [edi]
0x5f11af: mov edx, 0x5f1680 ; "SIZE1"
0x5f11b4: call 0x4025ec
0x5f11b9: mov eax, dword ptr [ebp + 8]
0x5f11bc: push eax
0x5f11bd: lea eax, [ebp - 0x74]
0x5f11c0: push eax
0x5f11c1: mov ecx, 0x5f1634
0x5f11c6: mov edx, 1
0x5f11cb: mov eax, 0x5f1690 ; "`EXI|"
0x5f11d0: call 0x5ee6d8
0x5f11d5: pop ecx
0x5f11d6: lea ecx, [ebp - 0x74]
0x5f11d9: mov eax, dword ptr [edi]
0x5f11db: mov edx, 0x5f16a0 ; "EXIST1"
0x5f11e0: call 0x4025ec
0x5f11e5: push 0x5f16b0 ; ";PR;RR;QTY;"
0x5f11ea: lea edx, [ebp - 0x78]
0x5f11ed: mov eax, dword ptr [ebp - 4]
0x5f11f0: call 0x40186c
0x5f11f5: mov eax, dword ptr [ebp - 0x78]
0x5f11f8: push eax
0x5f11f9: call 0x46c3a0
0x5f11fe: test al, al
0x5f1200: jne 0x5f1230
0x5f1202: mov eax, dword ptr [ebp - 4]
0x5f1205: call 0x401270
0x5f120a: dec eax
0x5f120b: jle 0x5f15af
0x5f1211: lea eax, [ebp - 0x7c]
0x5f1214: mov edx, dword ptr [ebp - 4]
0x5f1217: mov dl, byte ptr [edx + 1]
0x5f121a: call 0x401238
0x5f121f: mov eax, dword ptr [ebp - 0x7c]
0x5f1222: push eax
0x5f1223: call 0x46c3e8
0x5f1228: test al, al
0x5f122a: je 0x5f15af
0x5f1230: mov eax, dword ptr [ebp - 4]
0x5f1233: movzx eax, byte ptr [eax]
0x5f1236: add eax, -0x41
0x5f1239: cmp eax, 0x17
0x5f123c: ja 0x5f15af
0x5f1242: mov al, byte ptr [eax + 0x5f124f]
0x5f1248: jmp dword ptr [eax*4 + 0x5f1267]
0x5f124f: add al, byte ptr [edx]
0x5f1251: add dword ptr [edx], eax
0x5f1253: add dword ptr [eax], eax
0x5f1255: add byte ptr [eax], al
0x5f1257: add byte ptr [eax], al
0x5f1259: add byte ptr [edx], al
0x5f125b: add al, byte ptr [eax]
0x5f125d: add byte ptr [edx], al
0x5f125f: add al, byte ptr [edx]
0x5f1261: add al, byte ptr [ecx]
0x5f1263: add byte ptr [eax], al
0x5f1265: add al, byte ptr [edx]
0x5f1267: scasd eax, dword ptr es:[edi]
0x5f1268: adc eax, 0x1273005f
0x5f126d: pop edi
0x5f126e: add byte ptr [edi - 0x72ffa0ee], dl
0x5f1274: test dword ptr [edi + edi*8 - 1], esi
0x5f1278: push dword ptr [ebx]
0x5f127a: shr al, cl
0x5f127c: cwde
0x5f127d: add ecx, esp
0x5f127f: dec dword ptr [ebp - 0x8b73]
0x5f1285: dec dword ptr [ebx + 0x16a0ba07]
0x5f128b: pop edi
0x5f128c: add al, ch
0x5f128e: pop edx
0x5f128f: adc esp, ecx
0x5f1291: .byte 0xff
0x5f1292: jmp 0x5f15af
0x5f1297: push 1
0x5f1299: push 7
0x5f129b: lea eax, [ebp - 0xac]
0x5f12a1: push eax
0x5f12a2: imul esi, ebx, 0x15
0x5f12a5: mov eax, dword ptr [ebp + 8]
0x5f12a8: mov edx, dword ptr [eax + esi*4 - 0x62c]
0x5f12af: mov eax, dword ptr [ebp + 8]
0x5f12b2: mov eax, dword ptr [eax - 0x660]
0x5f12b8: mov ecx, 1
0x5f12bd: call 0x5ecc38
0x5f12c2: lea eax, [ebp - 0xac]
0x5f12c8: call 0x4013e8
0x5f12cd: add esp, -0xc
0x5f12d0: fstp xword ptr [esp]
0x5f12d3: wait
0x5f12d4: call 0x46c3d8
0x5f12d9: lea eax, [ebp - 0x9c]
0x5f12df: call 0x401420
0x5f12e4: lea ecx, [ebp - 0x9c]
0x5f12ea: mov eax, dword ptr [edi]
0x5f12ec: mov edx, 0x5f16c4 ; "QTY1"
0x5f12f1: call 0x4025ec
0x5f12f6: lea eax, [ebp - 0xbc]
0x5f12fc: push eax
0x5f12fd: mov eax, dword ptr [ebp + 8]
0x5f1300: mov edx, dword ptr [eax + esi*4 - 0x628]
0x5f1307: mov eax, dword ptr [ebp + 8]
0x5f130a: mov eax, dword ptr [eax - 0x660]
0x5f1310: xor ecx, ecx
0x5f1312: call 0x5ecc38
0x5f1317: lea ecx, [ebp - 0xbc]
0x5f131d: mov eax, dword ptr [edi]
0x5f131f: mov edx, 0x5f16d4 ; "UNIT1"
0x5f1324: call 0x4025ec
0x5f1329: mov eax, dword ptr [ebp + 8]
0x5f132c: push eax
0x5f132d: lea eax, [ebp - 0xcc]
0x5f1333: push eax
0x5f1334: mov ecx, 0x5f1634
0x5f1339: mov edx, 4
0x5f133e: mov eax, 0x5f16e4 ; "`DVD|"
0x5f1343: call 0x5ee6d8
0x5f1348: pop ecx
0x5f1349: lea ecx, [ebp - 0xcc]
0x5f134f: mov eax, dword ptr [edi]
0x5f1351: mov edx, 0x5f16f4 ; "DEVD1"
0x5f1356: call 0x4025ec
0x5f135b: mov eax, dword ptr [ebp + 8]
0x5f135e: push eax
0x5f135f: lea eax, [ebp - 0xdc]
0x5f1365: push eax
0x5f1366: mov ecx, 0x5f1634
0x5f136b: xor edx, edx
0x5f136d: mov eax, 0x5f1704 ; "`BMK|"
0x5f1372: call 0x5ee6d8
0x5f1377: pop ecx
0x5f1378: lea ecx, [ebp - 0xdc]
0x5f137e: mov eax, dword ptr [edi]
0x5f1380: mov edx, 0x5f1714 ; "BIMOK"
0x5f1385: call 0x4025ec
0x5f138a: mov eax, dword ptr [ebp + 8]
0x5f138d: push eax
0x5f138e: lea eax, [ebp - 0xec]
0x5f1394: push eax
0x5f1395: mov ecx, 0x5f1634
0x5f139a: mov edx, 1
0x5f139f: mov eax, 0x5f1724 ; "`IPR|"
0x5f13a4: call 0x5ee6d8
0x5f13a9: pop ecx
0x5f13aa: lea ecx, [ebp - 0xec]
0x5f13b0: mov eax, dword ptr [edi]
0x5f13b2: mov edx, 0x5f1734 ; "PRPT"
0x5f13b7: call 0x4025ec
0x5f13bc: mov eax, dword ptr [ebp - 4]
0x5f13bf: mov al, byte ptr [eax]
0x5f13c1: sub al, 0x44
0x5f13c3: jne 0x5f1459
0x5f13c9: mov eax, dword ptr [ebp + 8]
0x5f13cc: push eax
0x5f13cd: lea eax, [ebp - 0xfc]
0x5f13d3: push eax
0x5f13d4: mov ecx, 0x5f1634
0x5f13d9: xor edx, edx
0x5f13db: mov eax, 0x5f1744 ; "`SPR|"
0x5f13e0: call 0x5ee6d8
0x5f13e5: pop ecx
0x5f13e6: lea ecx, [ebp - 0xfc]
0x5f13ec: mov eax, dword ptr [edi]
0x5f13ee: mov edx, 0x5f1754 ; "SPRPT"
0x5f13f3: call 0x4025ec
0x5f13f8: mov eax, dword ptr [ebp + 8]
0x5f13fb: push eax
0x5f13fc: lea eax, [ebp - 0x10c]
0x5f1402: push eax
0x5f1403: mov ecx, 0x5f1634
0x5f1408: xor edx, edx
0x5f140a: mov eax, 0x5f1764 ; "`SBM|"
0x5f140f: call 0x5ee6d8
0x5f1414: pop ecx
0x5f1415: lea ecx, [ebp - 0x10c]
0x5f141b: mov eax, dword ptr [edi]
0x5f141d: mov edx, 0x5f1774 ; "SBMOK"
0x5f1422: call 0x4025ec
0x5f1427: mov eax, dword ptr [ebp + 8]
0x5f142a: push eax
0x5f142b: lea eax, [ebp - 0x11c]
0x5f1431: push eax
0x5f1432: mov ecx, 0x5f1634
0x5f1437: mov edx, 1
0x5f143c: mov eax, 0x5f1784 ; "`TPR|"
0x5f1441: call 0x5ee6d8
0x5f1446: pop ecx
0x5f1447: lea ecx, [ebp - 0x11c]
0x5f144d: mov eax, dword ptr [edi]
0x5f144f: mov edx, 0x5f1794 ; "TPRPT"
0x5f1454: call 0x4025ec
0x5f1459: push 0x5f17a4 ; ";PR;RR;"
0x5f145e: lea edx, [ebp - 0x120]
0x5f1464: mov eax, dword ptr [ebp - 4]
0x5f1467: call 0x40186c
0x5f146c: mov eax, dword ptr [ebp - 0x120]
0x5f1472: push eax
0x5f1473: call 0x46c3a0
0x5f1478: test al, al
0x5f147a: je 0x5f1542
0x5f1480: mov eax, dword ptr [ebp + 8]
0x5f1483: push eax
0x5f1484: lea eax, [ebp - 0x130]
0x5f148a: push eax
0x5f148b: mov ecx, 0x5f1634
0x5f1490: xor edx, edx
0x5f1492: mov eax, 0x5f17b4 ; "`UNI|"
0x5f1497: call 0x5ee6d8
0x5f149c: pop ecx
0x5f149d: lea ecx, [ebp - 0x130]
0x5f14a3: mov eax, dword ptr [edi]
0x5f14a5: mov edx, 0x5f16d4 ; "UNIT1"
0x5f14aa: call 0x4025ec
0x5f14af: mov eax, dword ptr [ebp + 8]
0x5f14b2: push eax
0x5f14b3: lea eax, [ebp - 0x140]
0x5f14b9: push eax
0x5f14ba: mov ecx, 0x5f1634
0x5f14bf: xor edx, edx
0x5f14c1: mov eax, 0x5f17c4 ; "`EQC|"
0x5f14c6: call 0x5ee6d8
0x5f14cb: pop ecx
0x5f14cc: lea ecx, [ebp - 0x140]
0x5f14d2: mov eax, dword ptr [edi]
0x5f14d4: mov edx, 0x5f17d4 ; "EQCODE"
0x5f14d9: call 0x4025ec
0x5f14de: mov eax, dword ptr [ebp + 8]
0x5f14e1: push eax
0x5f14e2: lea eax, [ebp - 0x150]
0x5f14e8: push eax
0x5f14e9: mov ecx, 0x5f1634
0x5f14ee: mov edx, 1
0x5f14f3: mov eax, 0x5f17e4 ; "`PRI|"
0x5f14f8: call 0x5ee6d8
0x5f14fd: pop ecx
0x5f14fe: lea ecx, [ebp - 0x150]
0x5f1504: mov eax, dword ptr [edi]
0x5f1506: mov edx, 0x5f17f4 ; "PRIN"
0x5f150b: call 0x4025ec
0x5f1510: mov eax, dword ptr [ebp + 8]
0x5f1513: push eax
0x5f1514: lea eax, [ebp - 0x160]
0x5f151a: push eax
0x5f151b: mov ecx, 0x5f1634
0x5f1520: mov edx, 1
0x5f1525: mov eax, 0x5f1804 ; "`PRO|"
0x5f152a: call 0x5ee6d8
0x5f152f: pop ecx
0x5f1530: lea ecx, [ebp - 0x160]
0x5f1536: mov eax, dword ptr [edi]
0x5f1538: mov edx, 0x5f1814 ; "PROUT"
0x5f153d: call 0x4025ec
0x5f1542: mov eax, dword ptr [ebp - 4]
0x5f1545: mov al, byte ptr [eax]
0x5f1547: sub al, 0x4d
0x5f1549: jne 0x5f157d
0x5f154b: mov eax, dword ptr [ebp + 8]
0x5f154e: push eax
0x5f154f: lea eax, [ebp - 0x170]
0x5f1555: push eax
0x5f1556: mov ecx, 0x5f1634
0x5f155b: mov edx, 1
0x5f1560: mov eax, 0x5f1824 ; "`KWN|"
0x5f1565: call 0x5ee6d8
0x5f156a: pop ecx
0x5f156b: lea ecx, [ebp - 0x170]
0x5f1571: mov eax, dword ptr [edi]
0x5f1573: mov edx, 0x5f1834 ; "KWNGP"
0x5f1578: call 0x4025ec
0x5f157d: mov eax, dword ptr [ebp + 8]
0x5f1580: push eax
0x5f1581: lea eax, [ebp - 0x180]
0x5f1587: push eax
0x5f1588: mov ecx, 0x5f1634
0x5f158d: mov edx, 4
0x5f1592: mov eax, 0x5f1844 ; "`BLA|"
0x5f1597: call 0x5ee6d8
0x5f159c: pop ecx
0x5f159d: lea ecx, [ebp - 0x180]
0x5f15a3: mov eax, dword ptr [edi]
0x5f15a5: mov edx, 0x5f1854 ; "BL_AMT"
0x5f15aa: call 0x4025ec
0x5f15af: xor eax, eax
0x5f15b1: pop edx
0x5f15b2: pop ecx
0x5f15b3: pop ecx
0x5f15b4: mov dword ptr fs:[eax], edx
0x5f15b7: push 0x5f1623
0x5f15bc: lea eax, [ebp - 0x180]
0x5f15c2: mov edx, dword ptr [0x68acec]
0x5f15c8: mov ecx, 6
0x5f15cd: call 0x401398
0x5f15d2: lea eax, [ebp - 0x120]
0x5f15d8: call 0x401210
0x5f15dd: lea eax, [ebp - 0x11c]
0x5f15e3: mov edx, dword ptr [0x68acec]
0x5f15e9: mov ecx, 0xa
0x5f15ee: call 0x401398
0x5f15f3: lea eax, [ebp - 0x7c]
0x5f15f6: mov edx, 2
0x5f15fb: call 0x401218
0x5f1600: lea eax, [ebp - 0x74]
0x5f1603: mov edx, dword ptr [0x68acec]
0x5f1609: mov ecx, 7
0x5f160e: call 0x401398
0x5f1613: lea eax, [ebp - 4]
0x5f1616: call 0x401210
0x5f161b: ret
0x5f161c: jmp 0x4011c8
0x5f1621: jmp 0x5f15bc
0x5f1623: pop edi
0x5f1624: pop esi
0x5f1625: pop ebx
0x5f1626: mov esp, ebp
0x5f1628: pop ebp
0x5f1629: ret
0x5f162a: add byte ptr [eax], al
0x5f162c: .byte 0xff
0x5f162d: .byte 0xff
0x5f162e: .byte 0xff
0x5f162f: inc dword ptr [ecx]
0x5f1631: add byte ptr [eax], al
0x5f1633: add byte ptr [0xff000000], al
0x5f1639: .byte 0xff
0x5f163a: .byte 0xff
0x5f163b: inc dword ptr [0x60000000]
0x5f1641: inc ebx
0x5f1642: dec edi
0x5f1643: inc esp
0x5f1644: jl 0x5f1646
0x5f1646: add byte ptr [eax], al
0x5f1648: .byte 0xff
0x5f1649: .byte 0xff
0x5f164a: .byte 0xff
0x5f164b: inc dword ptr [esi]
0x5f164d: add byte ptr [eax], al
0x5f164f: add byte ptr [edx + 0x44], al
0x5f1652: inc ebx
0x5f1653: dec edi
0x5f1654: inc esp
0x5f1655: inc ebp
0x5f1656: add byte ptr [eax], al
0x5f1658: .byte 0xff
0x5f1659: .byte 0xff
0x5f165a: .byte 0xff
0x5f165b: inc dword ptr [eax + eax]
0x5f165e: add byte ptr [eax], al
0x5f1660: inc ebx
0x5f1661: dec edi
0x5f1662: inc esp
0x5f1663: inc ebp
0x5f1664: add byte ptr [eax], al
0x5f1666: add byte ptr [eax], al
0x5f1668: .byte 0xff
0x5f1669: .byte 0xff
0x5f166a: .byte 0xff
0x5f166b: inc dword ptr [0x4e000000]
0x5f1671: inc ecx
0x5f1672: dec ebp
0x5f1673: inc ebp
0x5f1674: xor dword ptr [eax], eax
0x5f1676: add byte ptr [eax], al
0x5f1678: .byte 0xff
0x5f1679: .byte 0xff
0x5f167a: .byte 0xff
0x5f167b: inc dword ptr [0x53000000]
0x5f1681: dec ecx
0x5f1682: pop edx
0x5f1683: inc ebp
0x5f1684: xor dword ptr [eax], eax
0x5f1686: add byte ptr [eax], al
0x5f1688: .byte 0xff
0x5f1689: .byte 0xff
0x5f168a: .byte 0xff
0x5f168b: inc dword ptr [0x60000000]
0x5f1691: inc ebp
0x5f1692: pop eax
0x5f1693: dec ecx
0x5f1694: jl 0x5f1696
0x5f1696: add byte ptr [eax], al
0x5f1698: .byte 0xff
0x5f1699: .byte 0xff
0x5f169a: .byte 0xff
0x5f169b: inc dword ptr [esi]
0x5f169d: add byte ptr [eax], al
0x5f169f: add byte ptr [ebp + 0x58], al
0x5f16a2: dec ecx
0x5f16a3: push ebx
0x5f16a4: push esp
0x5f16a5: xor dword ptr [eax], eax
0x5f16a7: add bh, bh
0x5f16a9: .byte 0xff
0x5f16aa: .byte 0xff
0x5f16ab: dec dword ptr [ebx]
0x5f16ad: add byte ptr [eax], al
0x5f16af: add byte ptr [ebx], bh
0x5f16b1: push eax
0x5f16b2: push edx
0x5f16b3: cmp edx, dword ptr [edx + 0x52]
0x5f16b6: cmp edx, dword ptr [ecx + 0x54]
0x5f16b9: pop ecx
0x5f16ba: cmp eax, dword ptr [eax]
0x5f16bc: .byte 0xff
0x5f16bd: .byte 0xff
0x5f16be: .byte 0xff
0x5f16bf: inc dword ptr [eax + eax]
0x5f16c2: add byte ptr [eax], al
0x5f16c4: push ecx
0x5f16c5: push esp
0x5f16c6: pop ecx
0x5f16c7: xor dword ptr [eax], eax
0x5f16c9: add byte ptr [eax], al
0x5f16cb: add bh, bh
0x5f16cd: .byte 0xff
0x5f16ce: .byte 0xff
0x5f16cf: inc dword ptr [0x55000000]
0x5f16d5: dec esi
0x5f16d6: dec ecx
0x5f16d7: push esp
0x5f16d8: xor dword ptr [eax], eax
0x5f16da: add byte ptr [eax], al
0x5f16dc: .byte 0xff
0x5f16dd: .byte 0xff
0x5f16de: .byte 0xff
0x5f16df: inc dword ptr [0x60000000]
0x5f16e5: inc esp
0x5f16e6: push esi
0x5f16e7: inc esp
0x5f16e8: jl 0x5f16ea
0x5f16ea: add byte ptr [eax], al
0x5f16ec: .byte 0xff
0x5f16ed: .byte 0xff
0x5f16ee: .byte 0xff
0x5f16ef: inc dword ptr [0x44000000]
0x5f16f5: inc ebp
0x5f16f6: push esi
0x5f16f7: inc esp
0x5f16f8: xor dword ptr [eax], eax
0x5f16fa: add byte ptr [eax], al
0x5f16fc: .byte 0xff
0x5f16fd: .byte 0xff
0x5f16fe: .byte 0xff
0x5f16ff: inc dword ptr [0x60000000]
0x5f1705: inc edx
0x5f1706: dec ebp
0x5f1707: dec ebx
0x5f1708: jl 0x5f170a
0x5f170a: add byte ptr [eax], al
0x5f170c: .byte 0xff
0x5f170d: .byte 0xff
0x5f170e: .byte 0xff
0x5f170f: inc dword ptr [0x42000000]
0x5f1715: dec ecx
0x5f1716: dec ebp
0x5f1717: dec edi
0x5f1718: dec ebx
0x5f1719: add byte ptr [eax], al
0x5f171b: add bh, bh
0x5f171d: .byte 0xff
0x5f171e: .byte 0xff
0x5f171f: inc dword ptr [0x60000000]
0x5f1725: dec ecx
0x5f1726: push eax
0x5f1727: push edx
0x5f1728: jl 0x5f172a
0x5f172a: add byte ptr [eax], al
0x5f172c: .byte 0xff
0x5f172d: .byte 0xff
0x5f172e: .byte 0xff
0x5f172f: inc dword ptr [eax + eax]
0x5f1732: add byte ptr [eax], al
0x5f1734: push eax
0x5f1735: push edx
0x5f1736: push eax
0x5f1737: push esp
0x5f1738: add byte ptr [eax], al
0x5f173a: add byte ptr [eax], al
0x5f173c: .byte 0xff
0x5f173d: .byte 0xff
0x5f173e: .byte 0xff
0x5f173f: inc dword ptr [0x60000000]
0x5f1745: push ebx
0x5f1746: push eax
0x5f1747: push edx
0x5f1748: jl 0x5f174a
0x5f174a: add byte ptr [eax], al
0x5f174c: .byte 0xff
0x5f174d: .byte 0xff
0x5f174e: .byte 0xff
0x5f174f: inc dword ptr [0x53000000]
0x5f1755: push eax
0x5f1756: push edx
0x5f1757: push eax
0x5f1758: push esp
0x5f1759: add byte ptr [eax], al
0x5f175b: add bh, bh
0x5f175d: .byte 0xff
0x5f175e: .byte 0xff
0x5f175f: inc dword ptr [0x60000000]
0x5f1765: push ebx
0x5f1766: inc edx
0x5f1767: dec ebp
0x5f1768: jl 0x5f176a
0x5f176a: add byte ptr [eax], al
0x5f176c: .byte 0xff
0x5f176d: .byte 0xff
0x5f176e: .byte 0xff
0x5f176f: inc dword ptr [0x53000000]
0x5f1775: inc edx
0x5f1776: dec ebp
0x5f1777: dec edi
0x5f1778: dec ebx
0x5f1779: add byte ptr [eax], al
0x5f177b: add bh, bh
0x5f177d: .byte 0xff
0x5f177e: .byte 0xff
0x5f177f: inc dword ptr [0x60000000]
0x5f1785: push esp
0x5f1786: push eax
0x5f1787: push edx
0x5f1788: jl 0x5f178a
0x5f178a: add byte ptr [eax], al
0x5f178c: .byte 0xff
0x5f178d: .byte 0xff
0x5f178e: .byte 0xff
0x5f178f: inc dword ptr [0x54000000]
0x5f1795: push eax
0x5f1796: push edx
0x5f1797: push eax
0x5f1798: push esp
0x5f1799: add byte ptr [eax], al
0x5f179b: add bh, bh
0x5f179d: .byte 0xff
0x5f179e: .byte 0xff
0x5f179f: inc dword ptr [edi]
0x5f17a1: add byte ptr [eax], al
0x5f17a3: add byte ptr [ebx], bh
0x5f17a5: push eax
0x5f17a6: push edx
0x5f17a7: cmp edx, dword ptr [edx + 0x52]
0x5f17aa: cmp eax, dword ptr [eax]
0x5f17ac: .byte 0xff
0x5f17ad: .byte 0xff
0x5f17ae: .byte 0xff
0x5f17af: inc dword ptr [0x60000000]
0x5f17b5: push ebp
0x5f17b6: dec esi
0x5f17b7: dec ecx
0x5f17b8: jl 0x5f17ba
0x5f17ba: add byte ptr [eax], al
0x5f17bc: .byte 0xff
0x5f17bd: .byte 0xff
0x5f17be: .byte 0xff
0x5f17bf: inc dword ptr [0x60000000]
0x5f17c5: inc ebp
0x5f17c6: push ecx
0x5f17c7: inc ebx
0x5f17c8: jl 0x5f17ca
0x5f17ca: add byte ptr [eax], al
0x5f17cc: .byte 0xff
0x5f17cd: .byte 0xff
0x5f17ce: .byte 0xff
0x5f17cf: inc dword ptr [esi]
0x5f17d1: add byte ptr [eax], al
0x5f17d3: add byte ptr [ebp + 0x51], al
0x5f17d6: inc ebx
0x5f17d7: dec edi
0x5f17d8: inc esp
0x5f17d9: inc ebp
0x5f17da: add byte ptr [eax], al
0x5f17dc: .byte 0xff
0x5f17dd: .byte 0xff
0x5f17de: .byte 0xff
0x5f17df: inc dword ptr [0x60000000]
0x5f17e5: push eax
0x5f17e6: push edx
0x5f17e7: dec ecx
0x5f17e8: jl 0x5f17ea
0x5f17ea: add byte ptr [eax], al
0x5f17ec: .byte 0xff
0x5f17ed: .byte 0xff
0x5f17ee: .byte 0xff
0x5f17ef: inc dword ptr [eax + eax]
0x5f17f2: add byte ptr [eax], al
0x5f17f4: push eax
0x5f17f5: push edx
0x5f17f6: dec ecx
0x5f17f7: dec esi
0x5f17f8: add byte ptr [eax], al
0x5f17fa: add byte ptr [eax], al
0x5f17fc: .byte 0xff
0x5f17fd: .byte 0xff
0x5f17fe: .byte 0xff
0x5f17ff: inc dword ptr [0x60000000]
0x5f1805: push eax
0x5f1806: push edx
0x5f1807: dec edi
0x5f1808: jl 0x5f180a
0x5f180a: add byte ptr [eax], al
0x5f180c: .byte 0xff
0x5f180d: .byte 0xff
0x5f180e: .byte 0xff
0x5f180f: inc dword ptr [0x50000000]
0x5f1815: push edx
0x5f1816: dec edi
0x5f1817: push ebp
0x5f1818: push esp
0x5f1819: add byte ptr [eax], al
0x5f181b: add bh, bh
0x5f181d: .byte 0xff
0x5f181e: .byte 0xff
0x5f181f: inc dword ptr [0x60000000]
0x5f1825: dec ebx
0x5f1826: push edi
0x5f1827: dec esi
0x5f1828: jl 0x5f182a
0x5f182a: add byte ptr [eax], al
0x5f182c: .byte 0xff
0x5f182d: .byte 0xff
0x5f182e: .byte 0xff
0x5f182f: inc dword ptr [0x4b000000]
0x5f1835: push edi
0x5f1836: dec esi
0x5f1837: inc edi
0x5f1838: push eax
0x5f1839: add byte ptr [eax], al
0x5f183b: add bh, bh
0x5f183d: .byte 0xff
0x5f183e: .byte 0xff
0x5f183f: inc dword ptr [0x60000000]
0x5f1845: inc edx
0x5f1846: dec esp
0x5f1847: inc ecx
0x5f1848: jl 0x5f184a
0x5f184a: add byte ptr [eax], al
0x5f184c: .byte 0xff
0x5f184d: .byte 0xff
0x5f184e: .byte 0xff
0x5f184f: inc dword ptr [esi]
0x5f1851: add byte ptr [eax], al
0x5f1853: add byte ptr [edx + 0x4c], al
0x5f1856: pop edi
0x5f1857: inc ecx
0x5f1858: dec ebp
0x5f1859: push esp
0x5f185a: add byte ptr [eax], al
0x5f185c: push ebp
0x5f185d: mov ebp, esp
0x5f185f: mov ecx, 0xd
0x5f1864: push 0
0x5f1866: push 0
0x5f1868: dec ecx
0x5f1869: jne 0x5f1864
0x5f186b: push ebx
0x5f186c: mov ebx, eax
0x5f186e: xor eax, eax
0x5f1870: push ebp
0x5f1871: push 0x5f19ae
0x5f1876: push dword ptr fs:[eax]
0x5f1879: mov dword ptr fs:[eax], esp
0x5f187c: lea eax, [ebp - 0x10]
0x5f187f: push eax
0x5f1880: imul eax, ebx, 0x15
0x5f1883: mov edx, dword ptr [ebp + 8]
0x5f1886: mov edx, dword ptr [edx + eax*4 - 0x5ec]
0x5f188d: mov eax, dword ptr [ebp + 8]
0x5f1890: mov eax, dword ptr [eax - 0x660]
0x5f1896: xor ecx, ecx
0x5f1898: call 0x5ecc38
0x5f189d: lea edx, [ebp - 0x10]
0x5f18a0: mov eax, dword ptr [ebp + 8]
0x5f18a3: add eax, 0xfffff9c0
0x5f18a8: call 0x4013f8
0x5f18ad: mov eax, dword ptr [ebp + 8]
0x5f18b0: cmp dword ptr [eax - 0x640], 0
0x5f18b7: je 0x5f197d
0x5f18bd: mov eax, dword ptr [ebp + 8]
0x5f18c0: mov eax, dword ptr [eax - 0x640]
0x5f18c6: cmp byte ptr [eax], 7
0x5f18c9: jne 0x5f197d
0x5f18cf: lea eax, [ebp - 0x20]
0x5f18d2: mov edx, dword ptr [ebp + 8]
0x5f18d5: mov edx, dword ptr [edx - 0x68c]
0x5f18db: call 0x401440
0x5f18e0: lea eax, [ebp - 0x20]
0x5f18e3: push eax
0x5f18e4: lea eax, [ebp - 0x40]
0x5f18e7: mov edx, 0x5f19c4 ; "
"
0x5f18ec: call 0x401440
0x5f18f1: push dword ptr [ebp - 0x34]
0x5f18f4: push dword ptr [ebp - 0x38]
0x5f18f7: push dword ptr [ebp - 0x3c]
0x5f18fa: push dword ptr [ebp - 0x40]
0x5f18fd: mov al, 7
0x5f18ff: mov byte ptr [ebp - 0x53], al
0x5f1902: mov byte ptr [ebp - 0x54], 1
0x5f1906: lea eax, [ebp - 0x50]
0x5f1909: lea edx, [ebp - 0x54]
0x5f190c: call 0x401438
0x5f1911: push dword ptr [ebp - 0x44]
0x5f1914: push dword ptr [ebp - 0x48]
0x5f1917: push dword ptr [ebp - 0x4c]
0x5f191a: push dword ptr [ebp - 0x50]
0x5f191d: mov eax, dword ptr [ebp + 8]
0x5f1920: cmp dword ptr [eax - 0x68c], 0
0x5f1927: sete al
0x5f192a: push eax
0x5f192b: lea eax, [ebp - 0x30]
0x5f192e: push eax
0x5f192f: call 0x46c390
0x5f1934: lea edx, [ebp - 0x30]
0x5f1937: pop eax
0x5f1938: call 0x401470
0x5f193d: lea eax, [ebp - 0x20]
0x5f1940: push eax
0x5f1941: mov eax, dword ptr [ebp + 8]
0x5f1944: mov eax, dword ptr [eax - 0x640]
0x5f194a: push eax
0x5f194b: push 0x5f19d0
0x5f1950: lea eax, [ebp - 0x68]
0x5f1953: push eax
0x5f1954: call 0x46c3c0
0x5f1959: mov edx, dword ptr [ebp - 0x68]
0x5f195c: lea eax, [ebp - 0x64]
0x5f195f: call 0x401440
0x5f1964: lea edx, [ebp - 0x64]
0x5f1967: pop eax
0x5f1968: call 0x401470
0x5f196d: lea edx, [ebp - 0x20]
0x5f1970: mov eax, dword ptr [ebp + 8]
0x5f1973: add eax, 0xfffff974
0x5f1978: call 0x4013f8
0x5f197d: xor eax, eax
0x5f197f: pop edx
0x5f1980: pop ecx
0x5f1981: pop ecx
0x5f1982: mov dword ptr fs:[eax], edx
0x5f1985: push 0x5f19b5
0x5f198a: lea eax, [ebp - 0x68]
0x5f198d: call 0x401210
0x5f1992: lea eax, [ebp - 0x64]
0x5f1995: call 0x4014e8
0x5f199a: lea eax, [ebp - 0x50]
0x5f199d: mov edx, dword ptr [0x68acec]
0x5f19a3: mov ecx, 5
0x5f19a8: call 0x401398
0x5f19ad: ret
0x5f19ae: jmp 0x4011c8
0x5f19b3: jmp 0x5f198a
0x5f19b5: pop ebx
0x5f19b6: mov esp, ebp
0x5f19b8: pop ebp
0x5f19b9: ret
0x5f19ba: add byte ptr [eax], al
0x5f19bc: .byte 0xff
0x5f19bd: .byte 0xff
0x5f19be: .byte 0xff
0x5f19bf: inc dword ptr [edx]
0x5f19c1: add byte ptr [eax], al
0x5f19c3: add byte ptr [0xff00000a], cl
0x5f19c9: .byte 0xff
0x5f19ca: .byte 0xff
0x5f19cb: inc dword ptr [ecx]
0x5f19cd: add byte ptr [eax], al
0x5f19cf: add byte ptr [edi], al
0x5f19d1: add byte ptr [eax], al
@@ -0,0 +1,296 @@
0x4bc161: mov edx, 0x4bf4f4 ; "TCOST"
0x4bc166: call 0x4012b0 <_System__LStrCat3>
0x4bc181: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4bc194: mov ecx, 0x4bf4f4 ; "TCOST"
0x4bc199: mov edx, 0x4bf4b4 ; "COST"
0x4bc1a9: mov ecx, 0x4bf504 ; "Main.TXT"
0x4bc1b1: call 0x4012b0 <_System__LStrCat3>
0x4bc1e7: mov edx, 0x4bf518 ; "PNUM"
0x4bc1ec: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4bc1fd: call 0x4018c4 <@Sysutils@TrimRight$qqrx17System@AnsiString>
0x4bc212: mov edx, 0x4bf528 ; "PNAME"
0x4bc217: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4bc228: call 0x4018c4 <@Sysutils@TrimRight$qqrx17System@AnsiString>
0x4bc22d: push 0x4bf480 ; " "
0x4bc232: push 0x4bf538 ; " "
0x4bc24a: push 0x4bf480 ; " "
0x4bc24f: push 0x4bf538 ; " "
0x4bc287: call 0x401478 <_System__VarFromLStr>
0x4bc296: call 0x4a7cf0 PAD dl, 1
0x4bc29b: push dword ptr [ebp - 0x24c4]
0x4bc2b4: call 0x401478 <_System__VarFromLStr>
0x4bc2c3: call 0x4a7cf0 PAD dl, 1
0x4bc2c8: push dword ptr [ebp - 0x24d8]
0x4bc2ce: push 0x4bf544 ; "02"
0x4bc2de: call 0x4012b8 <_System__LStrCatN>
0x4bc2ef: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4bc2f4: call 0x401100 <_System__WriteLn>
0x4bc2fe: jmp 0x4bc393
0x4bc316: call 0x401478 <_System__VarFromLStr>
0x4bc328: call 0x4a7b1c <>
0x4bc32d: push dword ptr [ebp - 0x24f0]
0x4bc346: call 0x401478 <_System__VarFromLStr>
0x4bc358: call 0x4a7b1c <>
0x4bc35d: push dword ptr [ebp - 0x2504]
0x4bc363: push 0x4bf544 ; "02"
0x4bc373: call 0x4012b8 <_System__LStrCatN>
0x4bc384: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4bc389: call 0x401100 <_System__WriteLn>
0x4bc3a3: push 0x4bf550 ; "BOQ"
0x4bc3a8: push dword ptr [ebp - 0x1878]
0x4bc3ae: push 0x4bf278 ; ".DBF"
0x4bc3be: call 0x4012b8 <_System__LStrCatN>
0x4bc3d8: call 0x421e2c <>
0x4bc3e7: mov edx, 0x4bf55c ; "SORTCODE"
0x4bc415: mov ecx, 0x4bf570 ; "GongJong.TXT"
0x4bc41d: call 0x4012b0 <_System__LStrCat3>
0x4bc449: mov ecx, 0x4bf588 ; "MainPart.TXT"
0x4bc451: call 0x4012b0 <_System__LStrCat3>
0x4bc47a: push 0x4bc924
0x4bc500: mov edx, 0x4bf5a0 ; "01"
0x4bc505: call 0x401478 <_System__VarFromLStr>
0x4bc514: call 0x4a7cf0 PAD dl, 1
0x4bc519: push dword ptr [ebp - 0x2528]
0x4bc536: mov edx, 0x4bf528 ; "PNAME"
0x4bc53b: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4bc54c: call 0x401478 <_System__VarFromLStr>
0x4bc55b: call 0x4a7cf0 PAD dl, 1
0x4bc560: push dword ptr [ebp - 0x253c]
0x4bc57a: call 0x401440 <_System__VarFromInt>
0x4bc589: call 0x4a7cf0 PAD dl, 0
0x4bc58e: push dword ptr [ebp - 0x2554]
0x4bc5a3: call 0x401478 <_System__VarFromLStr>
0x4bc5b2: call 0x4a7cf0 PAD dl, 1
0x4bc5b7: push dword ptr [ebp - 0x2568]
0x4bc5cc: call 0x401478 <_System__VarFromLStr>
0x4bc5db: call 0x4a7cf0 PAD dl, 0
0x4bc5e0: push dword ptr [ebp - 0x257c]
0x4bc5e6: push 0x4bf450
0x4bc5eb: push 0x4bf45c
0x4bc5ff: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4bc611: call 0x4a7cf0 PAD dl, 0
0x4bc616: push dword ptr [ebp - 0x2590]
0x4bc61c: push 0x4bf45c
0x4bc621: push 0x4bf45c
0x4bc626: push 0x4bf45c
0x4bc62b: push 0x4bf45c
0x4bc63d: push dword ptr [ebp - 0x25a4]
0x4bc64e: call 0x4012b8 <_System__LStrCatN>
0x4bc65f: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4bc664: call 0x401100 <_System__WriteLn>
0x4bc66e: jmp 0x4bc7e4
0x4bc680: mov edx, 0x4bf5a0 ; "01"
0x4bc685: call 0x401478 <_System__VarFromLStr>
0x4bc697: call 0x4a7b1c <>
0x4bc69c: push dword ptr [ebp - 0x25ac]
0x4bc6b9: mov edx, 0x4bf528 ; "PNAME"
0x4bc6be: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4bc6cf: call 0x401478 <_System__VarFromLStr>
0x4bc6e1: call 0x4a7b1c <>
0x4bc6e6: push dword ptr [ebp - 0x25c0]
0x4bc700: call 0x401440 <_System__VarFromInt>
0x4bc712: call 0x4a7b1c <>
0x4bc717: push dword ptr [ebp - 0x25d8]
0x4bc71d: push 0x4bf450
0x4bc731: call 0x401478 <_System__VarFromLStr>
0x4bc743: call 0x4a7b1c <>
0x4bc748: push dword ptr [ebp - 0x25ec]
0x4bc74e: push 0x4bf45c
0x4bc75a: mov al, 0x46
0x4bc775: call 0x401470 <>
0x4bc787: call 0x4a7b1c <>
0x4bc78c: push dword ptr [ebp - 0x2600]
0x4bc792: push 0x4bf45c
0x4bc797: push 0x4bf45c
0x4bc79c: push 0x4bf45c
0x4bc7a1: push 0x4bf45c
0x4bc7b3: push dword ptr [ebp - 0x2618]
0x4bc7c4: call 0x4012b8 <_System__LStrCatN>
0x4bc7d5: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4bc7da: call 0x401100 <_System__WriteLn>
0x4bc7ea: mov edx, 0x4bf5a0 ; "01"
0x4bc7f4: jmp 0x4bc8dc
0x4bc82f: mov edx, 0x4bf5b0 ; "BDCODE1"
0x4bc834: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4bc84e: push dword ptr [ebp - 0x2624]
0x4bc854: push 0x4bf5c0 ; " / "
0x4bc867: push dword ptr [ebp - 0x2628]
0x4bc878: call 0x4012b8 <_System__LStrCatN>
0x4bc886: call 0x422c14 <FUN_00422c14>
0x4bc895: call 0x4b6378 <>
0x4bc8a9: jmp 0x4be6a2
0x4bc8af: call 0x4ad4b4 <>
0x4bc8c3: jmp 0x4be6a2
0x4bc8fe: push 0x4bc92b
0x4bc924: jmp 0x4011e0
0x4bc929: jmp 0x4bc903
0x4bc95f: call 0x401280 <>
0x4bc964: push 0x4bf5cc ; "E"
0x4bc969: push 0x4bf5d8 ; "S"
0x4bc981: push 0x4bf5e4 ; "2C"
0x4bc98d: mov ecx, 0x4bf5f0 ; "PPBIT"
0x4bc992: mov edx, 0x4bf600 ; "CPART"
0x4bc99c: push 0x4bf610 ; "4C"
0x4bc9a8: mov ecx, 0x4bf61c ; "MQBIT"
0x4bc9ad: mov edx, 0x4bf600 ; "CPART"
0x4bc9b7: push 0x4bf62c ; "0C"
0x4bc9c3: mov ecx, 0x4bf638 ; "MABIT"
0x4bc9c8: mov edx, 0x4bf600 ; "CPART"
0x4bc9d2: push 0x4bf62c ; "0C"
0x4bc9de: mov ecx, 0x4bf648 ; "MTBIT"
0x4bc9e3: mov edx, 0x4bf600 ; "CPART"
0x4bc9ed: mov al, 0x31
0x4bca08: call 0x401470 <>
0x4bca0d: push dword ptr [ebp - 0x2644]
0x4bca13: push dword ptr [ebp - 0x2648]
0x4bca19: push dword ptr [ebp - 0x264c]
0x4bca1f: push dword ptr [ebp - 0x2650]
0x4bca25: mov al, 0x30
0x4bca40: call 0x401470 <>
0x4bca45: push dword ptr [ebp - 0x2654]
0x4bca4b: push dword ptr [ebp - 0x2658]
0x4bca51: push dword ptr [ebp - 0x265c]
0x4bca57: push dword ptr [ebp - 0x2660]
0x4bca72: call 0x41f828 <IIF>
0x4bca8a: call 0x401478 <_System__VarFromLStr>
0x4bcaba: mov ecx, 0x4bf658 ; "MCMETHOD"
0x4bcabf: mov edx, 0x4bf600 ; "CPART"
0x4bcac9: push 0x4bf66c ; "6C"
0x4bcad5: mov ecx, 0x4bf678 ; "UQBIT"
0x4bcada: mov edx, 0x4bf600 ; "CPART"
0x4bcb08: call 0x4019cc <@Sysutils@FloatToStr$qqrg>
0x4bcb13: mov edx, 0x4bf688 ; "C"
0x4bcb18: call 0x4012a8 <_System__LStrCat>
0x4bcb2b: mov ecx, 0x4bf694 ; "UABIT"
0x4bcb30: mov edx, 0x4bf600 ; "CPART"
0x4bcb3a: mov al, 0x30
0x4bcb55: call 0x401470 <>
0x4bcb5a: push dword ptr [ebp - 0x2690]
0x4bcb60: push dword ptr [ebp - 0x2694]
0x4bcb66: push dword ptr [ebp - 0x2698]
0x4bcb6c: push dword ptr [ebp - 0x269c]
0x4bcb72: mov al, 0x32
0x4bcb8d: call 0x401470 <>
0x4bcb92: push dword ptr [ebp - 0x26a0]
0x4bcb98: push dword ptr [ebp - 0x26a4]
0x4bcb9e: push dword ptr [ebp - 0x26a8]
0x4bcba4: push dword ptr [ebp - 0x26ac]
0x4bcbd3: jmp 0x4bcbd7
0x4bcbdf: call 0x41f828 <IIF>
0x4bcbeb: mov al, 0x43
0x4bcc06: call 0x401470 <>
0x4bcc36: mov ecx, 0x4bf6a4 ; "UTBIT"
0x4bcc3b: mov edx, 0x4bf600 ; "CPART"
0x4bcc45: mov al, 0x31
0x4bcc60: call 0x401470 <>
0x4bcc65: push dword ptr [ebp - 0x26d4]
0x4bcc6b: push dword ptr [ebp - 0x26d8]
0x4bcc71: push dword ptr [ebp - 0x26dc]
0x4bcc77: push dword ptr [ebp - 0x26e0]
0x4bcc7d: mov al, 0x30
0x4bcc98: call 0x401470 <>
0x4bcc9d: push dword ptr [ebp - 0x26e4]
0x4bcca3: push dword ptr [ebp - 0x26e8]
0x4bcca9: push dword ptr [ebp - 0x26ec]
0x4bccaf: push dword ptr [ebp - 0x26f0]
0x4bccca: call 0x41f828 <IIF>
0x4bcce2: call 0x401478 <_System__VarFromLStr>
0x4bcd12: mov ecx, 0x4bf6b4 ; "UCMETHOD"
0x4bcd17: mov edx, 0x4bf600 ; "CPART"
0x4bcd21: push 0x4bf66c ; "6C"
0x4bcd2d: mov ecx, 0x4bf6c8 ; "JQBIT"
0x4bcd32: mov edx, 0x4bf600 ; "CPART"
0x4bcd60: call 0x4019cc <@Sysutils@FloatToStr$qqrg>
0x4bcd6b: mov edx, 0x4bf688 ; "C"
0x4bcd70: call 0x4012a8 <_System__LStrCat>
0x4bcd83: mov ecx, 0x4bf6d8 ; "JABIT"
0x4bcd88: mov edx, 0x4bf600 ; "CPART"
0x4bcd92: mov al, 0x30
0x4bcdad: call 0x401470 <>
0x4bcdb2: push dword ptr [ebp - 0x271c]
0x4bcdb8: push dword ptr [ebp - 0x2720]
0x4bcdbe: push dword ptr [ebp - 0x2724]
0x4bcdc4: push dword ptr [ebp - 0x2728]
0x4bcdca: mov al, 0x32
0x4bcde5: call 0x401470 <>
0x4bcdea: push dword ptr [ebp - 0x272c]
0x4bcdf0: push dword ptr [ebp - 0x2730]
0x4bcdf6: push dword ptr [ebp - 0x2734]
0x4bcdfc: push dword ptr [ebp - 0x2738]
0x4bce2b: jmp 0x4bce2f
0x4bce37: call 0x41f828 <IIF>
0x4bce43: mov al, 0x43
0x4bce5e: call 0x401470 <>
0x4bce8e: mov ecx, 0x4bf6e8 ; "JTBIT"
0x4bce93: mov edx, 0x4bf600 ; "CPART"
0x4bcea9: mov edx, 0x4bf6f8 ; "0"
0x4bceae: call 0x4012b0 <_System__LStrCat3>
0x4bcec1: mov ecx, 0x4bf704 ; "JCMETHOD"
0x4bcec6: mov edx, 0x4bf600 ; "CPART"
0x4bcef4: call 0x4019cc <@Sysutils@FloatToStr$qqrg>
0x4bceff: mov edx, 0x4bf718 ; "R"
0x4bcf04: call 0x4012a8 <_System__LStrCat>
0x4bcf17: mov ecx, 0x4bf724 ; "DQBIT"
0x4bcf1c: mov edx, 0x4bf600 ; "CPART"
0x4bcf26: push 0x4bf734 ; "11R"
0x4bcf32: mov ecx, 0x4bf740 ; "DRBIT"
0x4bcf37: mov edx, 0x4bf600 ; "CPART"
0x4bcf65: call 0x4019cc <@Sysutils@FloatToStr$qqrg>
0x4bcf70: mov edx, 0x4bf688 ; "C"
0x4bcf75: call 0x4012a8 <_System__LStrCat>
0x4bcf88: mov ecx, 0x4bf750 ; "DABIT"
0x4bcf8d: mov edx, 0x4bf600 ; "CPART"
0x4bcf97: push 0x4bf62c ; "0C"
0x4bcfa3: mov ecx, 0x4bf760 ; "DTBIT"
0x4bcfa8: mov edx, 0x4bf600 ; "CPART"
0x4bcfb2: mov al, 0x31
0x4bcfcd: call 0x401470 <>
0x4bcfd2: push dword ptr [ebp - 0x276c]
0x4bcfd8: push dword ptr [ebp - 0x2770]
0x4bcfde: push dword ptr [ebp - 0x2774]
0x4bcfe4: push dword ptr [ebp - 0x2778]
0x4bcfea: mov al, 0x30
0x4bd005: call 0x401470 <>
0x4bd00a: push dword ptr [ebp - 0x277c]
0x4bd010: push dword ptr [ebp - 0x2780]
0x4bd016: push dword ptr [ebp - 0x2784]
0x4bd01c: push dword ptr [ebp - 0x2788]
0x4bd037: call 0x41f828 <IIF>
0x4bd04f: call 0x401478 <_System__VarFromLStr>
0x4bd07f: mov ecx, 0x4bf770 ; "DCMETHOD"
0x4bd084: mov edx, 0x4bf600 ; "CPART"
0x4bd0a2: call 0x401280 <>
0x4bd0b5: mov ecx, 0x4bf784 ; "BMKNM"
0x4bd0ba: mov edx, 0x4bf794 ; "PPART"
0x4bd0d8: call 0x401280 <>
0x4bd0eb: mov ecx, 0x4bf7a4 ; "SUBNM"
0x4bd0f0: mov edx, 0x4bf794 ; "PPART"
0x4bd103: mov ecx, 0x4bf7b4 ; "FormWidth"
0x4bd108: mov edx, 0x4bf794 ; "PPART"
0x4bd126: call 0x401280 <>
0x4bd139: mov ecx, 0x4bf7c8 ; "JMOK1"
0x4bd13e: mov edx, 0x4bf794 ; "PPART"
0x4bd15c: call 0x401280 <>
0x4bd16f: mov ecx, 0x4bf7d8 ; "JMOK2"
0x4bd174: mov edx, 0x4bf794 ; "PPART"
0x4bd192: call 0x401280 <>
0x4bd1a5: mov ecx, 0x4bf7e8 ; "JMOK3"
0x4bd1aa: mov edx, 0x4bf794 ; "PPART"
0x4bd1c8: call 0x401280 <>
0x4bd1db: mov ecx, 0x4bf7f8 ; "JMOK4"
0x4bd1e0: mov edx, 0x4bf794 ; "PPART"
0x4bd1fe: call 0x401280 <>
0x4bd211: mov ecx, 0x4bf808 ; "JMOK5"
0x4bd216: mov edx, 0x4bf794 ; "PPART"
0x4bd234: call 0x401280 <>
0x4bd247: mov ecx, 0x4bf818 ; "JMOK6"
0x4bd24c: mov edx, 0x4bf794 ; "PPART"
0x4bd26a: call 0x401280 <>
0x4bd27d: mov ecx, 0x4bf828 ; "JMOK10"
0x4bd282: mov edx, 0x4bf794 ; "PPART"
0x4bd2a0: call 0x401280 <>
0x4bd2b3: mov ecx, 0x4bf838 ; "JMOK20"
0x4bd2b8: mov edx, 0x4bf794 ; "PPART"
0x4bd2d6: call 0x401280 <>
0x4bd2e9: mov ecx, 0x4bf848 ; "JMOK30"
0x4bd2ee: mov edx, 0x4bf794 ; "PPART"
@@ -0,0 +1,62 @@
0x48e7cf SRC ReadSection mov eax, dword ptr [0x6042a0] | call @System@TObject@ | mov dword ptr [ebp - 0x14], eax | mov ecx, dword ptr [ebp - 0x14] | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e84f SRC ReadStr push 0x48fce4="A->" | lea eax, [ebp - 0xb4] | push eax | mov ecx, 0x48f6dc="ARENM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e88c DST WriteInt lea eax, [ebp - 0x90] | call @System@@VarToInt | push eax | mov ecx, 0x48f6dc="ARENM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x18]
0x48e8aa SRC ReadStr push 0x48f6fc="MLST" | lea eax, [ebp - 0xb8] | push eax | mov ecx, 0x48f70c="BMKNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e8e0 SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xbc] | push eax | mov ecx, 0x48f71c="ACDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e916 SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xc0] | push eax | mov ecx, 0x48f71c="ACDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e94c SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xc4] | push eax | mov ecx, 0x48f73c="KCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e982 SRC ReadStr push 0x48fcfc="2" | lea eax, [ebp - 0xc8] | push eax | mov ecx, 0x48f76c="ZCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e9b8 SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xcc] | push eax | mov ecx, 0x48f77c="CHGNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48e9ee SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xd0] | push eax | mov ecx, 0x48f77c="CHGNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ea24 SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xd4] | push eax | mov ecx, 0x48f79c="CHNNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ea5a SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0xd8] | push eax | mov ecx, 0x48f7bc="BCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ea90 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0xdc] | push eax | mov ecx, 0x48f7cc="DCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eac6 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0xe0] | push eax | mov ecx, 0x48f7dc="ICDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eafc SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xe4] | push eax | mov ecx, 0x48f7ec="LCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eb32 SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0xe8] | push eax | mov ecx, 0x48f7fc="MCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eb68 SRC ReadStr push 0x48fd08="10" | lea eax, [ebp - 0xec] | push eax | mov ecx, 0x48f80c="PCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ebb5 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0xf0] | push eax | mov ecx, 0x48f82c="SCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ebeb SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0xf4] | push eax | mov ecx, 0x48f83c="WCDNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ec35 SRC ReadStr push 0 | lea eax, [ebp - 0xf8] | push eax | mov ecx, 0x48f874="SUBNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ec6b SRC ReadStr push 0x48f8a0="4" | lea eax, [ebp - 0xfc] | push eax | mov ecx, 0x48f890="LMGNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eca1 SRC ReadStr push 0x48f884="5" | lea eax, [ebp - 0x100] | push eax | mov ecx, 0x48f8ac="MKRNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ecd7 SRC ReadStr push 0x48f8bc="6" | lea eax, [ebp - 0x104] | push eax | mov ecx, 0x48f8c8="TMGNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ed0d SRC ReadStr push 0x48fa60="123456" | lea eax, [ebp - 0x108] | push eax | mov ecx, 0x48fa70="JEMNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ed43 SRC ReadStr push 0x48f8d8="가격 정보" | lea eax, [ebp - 0x10c] | push eax | mov ecx, 0x48f8ec="JMOK1" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ed79 SRC ReadStr push 0x48f8fc="물가 자료" | lea eax, [ebp - 0x110] | push eax | mov ecx, 0x48f910="JMOK2" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48edaf SRC ReadStr push 0x48f968="유통 물가" | lea eax, [ebp - 0x114] | push eax | mov ecx, 0x48f934="JMOK3" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ede5 SRC ReadStr push 0x48fd14="견적단가1" | lea eax, [ebp - 0x118] | push eax | mov ecx, 0x48f958="JMOK4" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ee1b SRC ReadStr push 0x48fd28="견적단가2" | lea eax, [ebp - 0x11c] | push eax | mov ecx, 0x48f97c="JMOK5" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ee51 SRC ReadStr push 0x48f98c="적용 단가" | lea eax, [ebp - 0x120] | push eax | mov ecx, 0x48f9a0="JMOK6" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ee87 SRC ReadStr push 0x48f9b0="가.정" | lea eax, [ebp - 0x124] | push eax | mov ecx, 0x48f9c0="JMK10" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eebd SRC ReadStr push 0x48f9d0="물.자" | lea eax, [ebp - 0x128] | push eax | mov ecx, 0x48f9e0="JMK20" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48eef3 SRC ReadStr push 0x48fa30="유.물" | lea eax, [ebp - 0x12c] | push eax | mov ecx, 0x48fa00="JMK30" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ef29 SRC ReadStr push 0x48fd3c="견적 1" | lea eax, [ebp - 0x130] | push eax | mov ecx, 0x48fa20="JMK40" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ef5f SRC ReadStr push 0x48fd4c="견적 2" | lea eax, [ebp - 0x134] | push eax | mov ecx, 0x48fa40="JMK50" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48ef95 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x138] | push eax | mov ecx, 0x48fa50="JUKNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48efc8 SRC ReadStr push 0 | lea eax, [ebp - 0x13c] | push eax | mov ecx, 0x48fa80="ORDNM" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x10]
0x48effe SRC ReadStr push 0x48faa0="굴림체" | lea eax, [ebp - 0x140] | push eax | mov ecx, 0x48fd5c="CBFONT" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x10]
0x48f04b SRC ReadStr push 0x48fae0="clRed" | lea eax, [ebp - 0x144] | push eax | mov ecx, 0x48fd6c="ColDan" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x10]
0x48f081 SRC ReadStr push 0x48fac0="clBlack" | lea eax, [ebp - 0x148] | push eax | mov ecx, 0x48fd7c="ColByn" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x10]
0x48f0b7 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x14c] | push eax | mov ecx, 0x48fd8c="FOMNM" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x10]
0x48f0ed SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x150] | push eax | mov ecx, 0x48fd9c="LANNM" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x10]
0x48f119 DST WriteBool call dword ptr [ebx + 4] | push 1 | mov ecx, 0x48fb3c="SAN_AMT" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x18]
0x48f12d DST WriteInt push 3 | mov ecx, 0x48fb4c="FLT_JAB" | mov edx, 0x48fa90="PRINT" | mov eax, dword ptr [ebp - 0x18]
0x48f14b SRC ReadStr push 0x48fdac="1/8 * 16/12 * 25/20" | lea eax, [ebp - 0x154] | push eax | mov ecx, 0x48fb5c="RXXNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f18f SRC ReadStr push 0 | lea eax, [ebp - 0x158] | push eax | mov ecx, 0x48fb80="RXTNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f1c5 SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x15c] | push eax | mov ecx, 0x48fdd8="EX1NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f1fb SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x160] | push eax | mov ecx, 0x48fde8="EX2NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f231 SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x164] | push eax | mov ecx, 0x48fdf8="EXCNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f267 SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x168] | push eax | mov ecx, 0x48fe08="EX0NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f29d SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x16c] | push eax | mov ecx, 0x48fdd8="EX1NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f2d3 SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x170] | push eax | mov ecx, 0x48fdd8="EX1NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f309 SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x174] | push eax | mov ecx, 0x48fdd8="EX1NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f33f SRC ReadStr push 0x48fdc8="1000" | lea eax, [ebp - 0x178] | push eax | mov ecx, 0x48fdd8="EX1NM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f3be SRC ReadStr push 0x48fcf0="1" | lea eax, [ebp - 0x17c] | push eax | mov ecx, 0x48fc60="PMODE" | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
0x48f3f4 SRC ReadStr push 0x48fe18="프로젝트명" | lea eax, [ebp - 0x180] | push eax | mov ecx, 0x48fc70="PNAME" | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
0x48f44f SRC ReadStr push 0x48fe3c="90.000" | lea eax, [ebp - 0x184] | push eax | mov ecx, 0x48fe2c="NAGNM" | mov edx, 0x48f6ec="START" | mov eax, dword ptr [ebp - 0x10]
0x48f47f SRC ReadSection mov eax, dword ptr [ebp - 0x14] | mov edx, dword ptr [eax] | call dword ptr [edx + 0x44] | mov ecx, dword ptr [ebp - 0x14] | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
0x48f4ae SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x188] | push eax | mov ecx, 0x48fe5c="PMHAL" | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
0x48f4f5 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x18c] | push eax | mov ecx, 0x48fe6c="EQ_L" | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
0x48f53c SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x190] | push eax | mov ecx, 0x48fe7c="EQ_M" | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
0x48f583 SRC ReadStr push 0x48fb10="0" | lea eax, [ebp - 0x194] | push eax | mov ecx, 0x48fe8c="EQ_S" | mov edx, 0x48fc50="PROJECT" | mov eax, dword ptr [ebp - 0x10]
@@ -0,0 +1,991 @@
0x4b0fac: jmp dword ptr [eax*4 + 0x4b0fb3]
0x4b0ff2: call 0x4a7cf0 PAD dl, 1
0x4b0ff7: push dword ptr [ebp - 0xc8]
0x4b100a: lea edx, [ebx + 0x99]
0x4b1010: call 0x401470 <>
0x4b101f: call 0x4a7cf0 PAD dl, 1
0x4b1024: push dword ptr [ebp - 0xdc]
0x4b1037: lea edx, [ebx + 0xff]
0x4b103d: call 0x401470 <>
0x4b104c: call 0x4a7cf0 PAD dl, 1
0x4b1051: push dword ptr [ebp - 0xf0]
0x4b1064: lea edx, [ebx + 0x179]
0x4b106a: call 0x401470 <>
0x4b1079: call 0x4a7cf0 PAD dl, 1
0x4b107e: push dword ptr [ebp - 0x104]
0x4b1094: fld qword ptr [ebx + eax*8 + 0x190]
0x4b10a1: call 0x401458 <_System__VarFromReal>
0x4b10b0: call 0x4a7cf0 PAD dl, 1
0x4b10b5: push dword ptr [ebp - 0x118]
0x4b10c8: lea edx, [ebx + 0x7b]
0x4b10cb: call 0x401470 <>
0x4b10da: call 0x4a7cf0 PAD dl, 0
0x4b10df: push dword ptr [ebp - 0x12c]
0x4b10f4: call 0x401478 <_System__VarFromLStr>
0x4b1103: call 0x4a7cf0 PAD dl, 1
0x4b1108: push dword ptr [ebp - 0x140]
0x4b111d: call 0x401478 <_System__VarFromLStr>
0x4b112c: call 0x4a7cf0 PAD dl, 0
0x4b1131: push dword ptr [ebp - 0x154]
0x4b1137: push 0x4b5f94
0x4b1149: lea edx, [ebx + 0x188]
0x4b114f: call 0x401470 <>
0x4b115e: call 0x4a7cf0 PAD dl, 0
0x4b1163: push dword ptr [ebp - 0x168]
0x4b1169: push 0x4b5fa0
0x4b1175: mov edx, 0x4b5fac ; "UC"
0x4b117d: call 0x40311c <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x4b1191: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4b11a3: call 0x4a7cf0 PAD dl, 0
0x4b11a8: push dword ptr [ebp - 0x17c]
0x4b11ae: push 0x4b5fa0
0x4b11cd: mov edx, 0x4b5fb8 ; "AMT_1"
0x4b11d2: call 0x4012b0 <_System__LStrCat3>
0x4b11e0: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b11eb: call 0x401458 <_System__VarFromReal>
0x4b11fa: call 0x4a7cf0 PAD dl, 0
0x4b11ff: push dword ptr [ebp - 0x190]
0x4b1205: push 0x4b5fa0
0x4b1224: mov edx, 0x4b5fc8 ; "AMT_2"
0x4b1229: call 0x4012b0 <_System__LStrCat3>
0x4b1237: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1242: call 0x401458 <_System__VarFromReal>
0x4b1251: call 0x4a7cf0 PAD dl, 0
0x4b1256: push dword ptr [ebp - 0x1a8]
0x4b125c: push 0x4b5fa0
0x4b127b: mov edx, 0x4b5fd8 ; "AMT_3"
0x4b1280: call 0x4012b0 <_System__LStrCat3>
0x4b128e: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1299: call 0x401458 <_System__VarFromReal>
0x4b12a8: call 0x4a7cf0 PAD dl, 0
0x4b12ad: push dword ptr [ebp - 0x1c0]
0x4b12b3: push 0x4b5fa0
0x4b12d2: mov edx, 0x4b5fe8 ; "AMT_4"
0x4b12d7: call 0x4012b0 <_System__LStrCat3>
0x4b12e5: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b12f0: call 0x401458 <_System__VarFromReal>
0x4b12ff: call 0x4a7cf0 PAD dl, 0
0x4b1304: push dword ptr [ebp - 0x1d8]
0x4b130a: push 0x4b5fa0
0x4b1329: mov edx, 0x4b5ff8 ; "AMT_5"
0x4b132e: call 0x4012b0 <_System__LStrCat3>
0x4b133c: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1347: call 0x401458 <_System__VarFromReal>
0x4b1356: call 0x4a7cf0 PAD dl, 0
0x4b135b: push dword ptr [ebp - 0x1f0]
0x4b1361: push 0x4b5fa0
0x4b1366: push dword ptr [ebp - 0x1c]
0x4b1374: call 0x4012b8 <_System__LStrCatN>
0x4b1390: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4b1395: call 0x401100 <_System__WriteLn>
0x4b139f: jmp 0x4b4f2f
0x4b13b1: lea edx, [ebx + 0x68]
0x4b13b4: call 0x401470 <>
0x4b13c3: call 0x4a7cf0 PAD dl, 1
0x4b13c8: push dword ptr [ebp - 0x20c]
0x4b13db: lea edx, [ebx + 0x99]
0x4b13e1: call 0x401470 <>
0x4b13f0: call 0x4a7cf0 PAD dl, 1
0x4b13f5: push dword ptr [ebp - 0x220]
0x4b1408: lea edx, [ebx + 0xff]
0x4b140e: call 0x401470 <>
0x4b141d: call 0x4a7cf0 PAD dl, 1
0x4b1422: push dword ptr [ebp - 0x234]
0x4b1435: lea edx, [ebx + 0x179]
0x4b143b: call 0x401470 <>
0x4b144a: call 0x4a7cf0 PAD dl, 1
0x4b144f: push dword ptr [ebp - 0x248]
0x4b1465: fld qword ptr [ebx + eax*8 + 0x198]
0x4b1472: call 0x401458 <_System__VarFromReal>
0x4b1481: call 0x4a7cf0 PAD dl, 1
0x4b1486: push dword ptr [ebp - 0x25c]
0x4b1499: lea edx, [ebx + 0x7b]
0x4b149c: call 0x401470 <>
0x4b14ab: call 0x4a7cf0 PAD dl, 0
0x4b14b0: push dword ptr [ebp - 0x270]
0x4b14c5: call 0x401478 <_System__VarFromLStr>
0x4b14d4: call 0x4a7cf0 PAD dl, 1
0x4b14d9: push dword ptr [ebp - 0x284]
0x4b14f9: mov edx, 0x4b5fb8 ; "AMT_1"
0x4b14fe: call 0x4012b0 <_System__LStrCat3>
0x4b150c: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1517: call 0x401458 <_System__VarFromReal>
0x4b1526: call 0x4a7cf0 PAD dl, 1
0x4b152b: push dword ptr [ebp - 0x298]
0x4b154b: mov edx, 0x4b6008 ; "PG_1"
0x4b1550: call 0x4012b0 <_System__LStrCat3>
0x4b1564: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1575: call 0x401478 <_System__VarFromLStr>
0x4b1584: call 0x4a7cf0 PAD dl, 1
0x4b1589: push dword ptr [ebp - 0x2b0]
0x4b15a9: mov edx, 0x4b5fc8 ; "AMT_2"
0x4b15ae: call 0x4012b0 <_System__LStrCat3>
0x4b15bc: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b15c7: call 0x401458 <_System__VarFromReal>
0x4b15d6: call 0x4a7cf0 PAD dl, 1
0x4b15db: push dword ptr [ebp - 0x2cc]
0x4b15fb: mov edx, 0x4b6018 ; "PG_2"
0x4b1600: call 0x4012b0 <_System__LStrCat3>
0x4b1614: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1625: call 0x401478 <_System__VarFromLStr>
0x4b1634: call 0x4a7cf0 PAD dl, 1
0x4b1639: push dword ptr [ebp - 0x2e4]
0x4b1659: mov edx, 0x4b5fd8 ; "AMT_3"
0x4b165e: call 0x4012b0 <_System__LStrCat3>
0x4b166c: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1677: call 0x401458 <_System__VarFromReal>
0x4b1686: call 0x4a7cf0 PAD dl, 1
0x4b168b: push dword ptr [ebp - 0x300]
0x4b16ab: mov edx, 0x4b6028 ; "PG_3"
0x4b16b0: call 0x4012b0 <_System__LStrCat3>
0x4b16c4: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b16d5: call 0x401478 <_System__VarFromLStr>
0x4b16e4: call 0x4a7cf0 PAD dl, 1
0x4b16e9: push dword ptr [ebp - 0x318]
0x4b1709: mov edx, 0x4b5fe8 ; "AMT_4"
0x4b170e: call 0x4012b0 <_System__LStrCat3>
0x4b171c: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1727: call 0x401458 <_System__VarFromReal>
0x4b1736: call 0x4a7cf0 PAD dl, 1
0x4b173b: push dword ptr [ebp - 0x334]
0x4b175b: mov edx, 0x4b6038 ; "PG_4"
0x4b1760: call 0x4012b0 <_System__LStrCat3>
0x4b1774: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1785: call 0x401478 <_System__VarFromLStr>
0x4b1794: call 0x4a7cf0 PAD dl, 1
0x4b1799: push dword ptr [ebp - 0x34c]
0x4b17b9: mov edx, 0x4b5ff8 ; "AMT_5"
0x4b17be: call 0x4012b0 <_System__LStrCat3>
0x4b17cc: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b17d7: call 0x401458 <_System__VarFromReal>
0x4b17e6: call 0x4a7cf0 PAD dl, 1
0x4b17eb: push dword ptr [ebp - 0x368]
0x4b180b: mov edx, 0x4b6048 ; "PG_5"
0x4b1810: call 0x4012b0 <_System__LStrCat3>
0x4b1824: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1835: call 0x401478 <_System__VarFromLStr>
0x4b1844: call 0x4a7cf0 PAD dl, 1
0x4b1849: push dword ptr [ebp - 0x380]
0x4b185e: call 0x401478 <_System__VarFromLStr>
0x4b186d: call 0x4a7cf0 PAD dl, 1
0x4b1872: push dword ptr [ebp - 0x39c]
0x4b1887: call 0x401478 <_System__VarFromLStr>
0x4b1896: call 0x4a7cf0 PAD dl, 1
0x4b189b: push dword ptr [ebp - 0x3b0]
0x4b18b0: call 0x401478 <_System__VarFromLStr>
0x4b18bf: call 0x4a7cf0 PAD dl, 0
0x4b18c4: push dword ptr [ebp - 0x3c4]
0x4b18ca: push 0x4b5f94
0x4b18dc: lea edx, [ebx + 0x188]
0x4b18e2: call 0x401470 <>
0x4b18f1: call 0x4a7cf0 PAD dl, 0
0x4b18f6: push dword ptr [ebp - 0x3d8]
0x4b18fc: push 0x4b5fa0
0x4b1908: mov edx, 0x4b5fac ; "UC"
0x4b1910: call 0x40311c <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x4b1924: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4b1936: call 0x4a7cf0 PAD dl, 0
0x4b193b: push dword ptr [ebp - 0x3ec]
0x4b1941: push 0x4b5fa0
0x4b1960: mov edx, 0x4b5fb8 ; "AMT_1"
0x4b1965: call 0x4012b0 <_System__LStrCat3>
0x4b1973: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b197e: call 0x401458 <_System__VarFromReal>
0x4b198d: call 0x4a7cf0 PAD dl, 0
0x4b1992: push dword ptr [ebp - 0x400]
0x4b1998: push 0x4b5fa0
0x4b19b7: mov edx, 0x4b5fc8 ; "AMT_2"
0x4b19bc: call 0x4012b0 <_System__LStrCat3>
0x4b19ca: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b19d5: call 0x401458 <_System__VarFromReal>
0x4b19e4: call 0x4a7cf0 PAD dl, 0
0x4b19e9: push dword ptr [ebp - 0x418]
0x4b19ef: push 0x4b5fa0
0x4b1a0e: mov edx, 0x4b5fd8 ; "AMT_3"
0x4b1a13: call 0x4012b0 <_System__LStrCat3>
0x4b1a21: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1a2c: call 0x401458 <_System__VarFromReal>
0x4b1a3b: call 0x4a7cf0 PAD dl, 0
0x4b1a40: push dword ptr [ebp - 0x430]
0x4b1a46: push 0x4b5fa0
0x4b1a65: mov edx, 0x4b5fe8 ; "AMT_4"
0x4b1a6a: call 0x4012b0 <_System__LStrCat3>
0x4b1a78: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1a83: call 0x401458 <_System__VarFromReal>
0x4b1a92: call 0x4a7cf0 PAD dl, 0
0x4b1a97: push dword ptr [ebp - 0x448]
0x4b1a9d: push 0x4b5fa0
0x4b1abc: mov edx, 0x4b5ff8 ; "AMT_5"
0x4b1ac1: call 0x4012b0 <_System__LStrCat3>
0x4b1acf: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b1ada: call 0x401458 <_System__VarFromReal>
0x4b1ae9: call 0x4a7cf0 PAD dl, 0
0x4b1aee: push dword ptr [ebp - 0x460]
0x4b1af4: push 0x4b5fa0
0x4b1b13: mov edx, 0x4b6008 ; "PG_1"
0x4b1b18: call 0x4012b0 <_System__LStrCat3>
0x4b1b2c: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1b3d: call 0x401478 <_System__VarFromLStr>
0x4b1b4c: call 0x4a7cf0 PAD dl, 0
0x4b1b51: push dword ptr [ebp - 0x478]
0x4b1b57: push 0x4b5fa0
0x4b1b76: mov edx, 0x4b6018 ; "PG_2"
0x4b1b7b: call 0x4012b0 <_System__LStrCat3>
0x4b1b8f: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1ba0: call 0x401478 <_System__VarFromLStr>
0x4b1baf: call 0x4a7cf0 PAD dl, 0
0x4b1bb4: push dword ptr [ebp - 0x494]
0x4b1bba: push 0x4b5fa0
0x4b1bd9: mov edx, 0x4b6028 ; "PG_3"
0x4b1bde: call 0x4012b0 <_System__LStrCat3>
0x4b1bf2: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1c03: call 0x401478 <_System__VarFromLStr>
0x4b1c12: call 0x4a7cf0 PAD dl, 0
0x4b1c17: push dword ptr [ebp - 0x4b0]
0x4b1c1d: push 0x4b5fa0
0x4b1c3c: mov edx, 0x4b6038 ; "PG_4"
0x4b1c41: call 0x4012b0 <_System__LStrCat3>
0x4b1c55: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1c66: call 0x401478 <_System__VarFromLStr>
0x4b1c75: call 0x4a7cf0 PAD dl, 0
0x4b1c7a: push dword ptr [ebp - 0x4cc]
0x4b1c80: push 0x4b5fa0
0x4b1c9f: mov edx, 0x4b6048 ; "PG_5"
0x4b1ca4: call 0x4012b0 <_System__LStrCat3>
0x4b1cb8: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1cc9: call 0x401478 <_System__VarFromLStr>
0x4b1cd8: call 0x4a7cf0 PAD dl, 0
0x4b1cdd: push dword ptr [ebp - 0x4e8]
0x4b1ce3: push 0x4b5fa0
0x4b1cf5: mov edx, 0x4b6058 ; "PG_J"
0x4b1cfd: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1d0e: call 0x401478 <_System__VarFromLStr>
0x4b1d1d: call 0x4a7cf0 PAD dl, 0
0x4b1d22: push dword ptr [ebp - 0x504]
0x4b1d28: push 0x4b5fa0
0x4b1d47: mov edx, 0x4b6068 ; "PG_"
0x4b1d4c: call 0x4012b0 <_System__LStrCat3>
0x4b1d60: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b1d71: call 0x401478 <_System__VarFromLStr>
0x4b1d80: call 0x4a7cf0 PAD dl, 0
0x4b1d85: push dword ptr [ebp - 0x51c]
0x4b1d8b: push 0x4b5fa0
0x4b1d90: push dword ptr [ebp - 0x1c]
0x4b1d9e: call 0x4012b8 <_System__LStrCatN>
0x4b1dba: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4b1dbf: call 0x401100 <_System__WriteLn>
0x4b1dc9: jmp 0x4b4f2f
0x4b1ddb: lea edx, [ebx + 0x68]
0x4b1dde: call 0x401470 <>
0x4b1ded: call 0x4a7cf0 PAD dl, 1
0x4b1df2: push dword ptr [ebp - 0x53c]
0x4b1e05: lea edx, [ebx + 0x99]
0x4b1e0b: call 0x401470 <>
0x4b1e1a: call 0x4a7cf0 PAD dl, 1
0x4b1e1f: push dword ptr [ebp - 0x550]
0x4b1e32: lea edx, [ebx + 0xff]
0x4b1e38: call 0x401470 <>
0x4b1e47: call 0x4a7cf0 PAD dl, 1
0x4b1e4c: push dword ptr [ebp - 0x564]
0x4b1e5f: lea edx, [ebx + 0x179]
0x4b1e65: call 0x401470 <>
0x4b1e74: call 0x4a7cf0 PAD dl, 1
0x4b1e79: push dword ptr [ebp - 0x578]
0x4b1e86: mov al, 0x30
0x4b1ea1: call 0x401470 <>
0x4b1eb0: call 0x4a7cf0 PAD dl, 1
0x4b1eb5: push dword ptr [ebp - 0x58c]
0x4b1ec2: mov al, 0x30
0x4b1edd: call 0x401470 <>
0x4b1eec: call 0x4a7cf0 PAD dl, 1
0x4b1ef1: push dword ptr [ebp - 0x5a4]
0x4b1f07: fld qword ptr [ebx + eax*8 + 0x1a0]
0x4b1f14: call 0x401458 <_System__VarFromReal>
0x4b1f23: call 0x4a7cf0 PAD dl, 1
0x4b1f28: push dword ptr [ebp - 0x5b8]
0x4b1f3b: lea edx, [ebx + 0x7b]
0x4b1f3e: call 0x401470 <>
0x4b1f4d: call 0x4a7cf0 PAD dl, 0
0x4b1f52: push dword ptr [ebp - 0x5cc]
0x4b1f67: call 0x401478 <_System__VarFromLStr>
0x4b1f76: call 0x4a7cf0 PAD dl, 1
0x4b1f7b: push dword ptr [ebp - 0x5e0]
0x4b1f90: call 0x401478 <_System__VarFromLStr>
0x4b1f9f: call 0x4a7cf0 PAD dl, 0
0x4b1fa4: push dword ptr [ebp - 0x5f4]
0x4b1faa: push 0x4b5f94
0x4b1fbc: lea edx, [ebx + 0x188]
0x4b1fc2: call 0x401470 <>
0x4b1fd1: call 0x4a7cf0 PAD dl, 0
0x4b1fd6: push dword ptr [ebp - 0x608]
0x4b1fdc: push 0x4b5fa0
0x4b1fe8: mov edx, 0x4b5fac ; "UC"
0x4b1ff0: call 0x40311c <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x4b2004: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4b2016: call 0x4a7cf0 PAD dl, 0
0x4b201b: push dword ptr [ebp - 0x61c]
0x4b2021: push 0x4b5fa0
0x4b2026: push dword ptr [ebp - 0x1c]
0x4b2034: call 0x4012b8 <_System__LStrCatN>
0x4b2050: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4b2055: call 0x401100 <_System__WriteLn>
0x4b205f: jmp 0x4b4f2f
0x4b2071: lea edx, [ebx + 0x68]
0x4b2074: call 0x401470 <>
0x4b2083: call 0x4a7cf0 PAD dl, 1
0x4b2088: push dword ptr [ebp - 0x644]
0x4b209b: lea edx, [ebx + 0x99]
0x4b20a1: call 0x401470 <>
0x4b20b0: call 0x4a7cf0 PAD dl, 1
0x4b20b5: push dword ptr [ebp - 0x658]
0x4b20c8: lea edx, [ebx + 0xff]
0x4b20ce: call 0x401470 <>
0x4b20dd: call 0x4a7cf0 PAD dl, 1
0x4b20e2: push dword ptr [ebp - 0x66c]
0x4b20f5: lea edx, [ebx + 0x179]
0x4b20fb: call 0x401470 <>
0x4b210a: call 0x4a7cf0 PAD dl, 1
0x4b210f: push dword ptr [ebp - 0x680]
0x4b2125: fld qword ptr [ebx + eax*8 + 0x198]
0x4b2132: call 0x401458 <_System__VarFromReal>
0x4b2141: call 0x4a7cf0 PAD dl, 1
0x4b2146: push dword ptr [ebp - 0x694]
0x4b215c: fld qword ptr [ebx + eax*8 + 0x190]
0x4b2169: call 0x401458 <_System__VarFromReal>
0x4b2178: call 0x4a7cf0 PAD dl, 1
0x4b217d: push dword ptr [ebp - 0x6a8]
0x4b2193: fld qword ptr [ebx + eax*8 + 0x1a0]
0x4b21a0: call 0x401458 <_System__VarFromReal>
0x4b21af: call 0x4a7cf0 PAD dl, 1
0x4b21b4: push dword ptr [ebp - 0x6bc]
0x4b21c7: lea edx, [ebx + 0x7b]
0x4b21ca: call 0x401470 <>
0x4b21d9: call 0x4a7cf0 PAD dl, 0
0x4b21de: push dword ptr [ebp - 0x6d0]
0x4b21f3: call 0x401478 <_System__VarFromLStr>
0x4b2202: call 0x4a7cf0 PAD dl, 1
0x4b2207: push dword ptr [ebp - 0x6e4]
0x4b221c: call 0x401478 <_System__VarFromLStr>
0x4b222b: call 0x4a7cf0 PAD dl, 0
0x4b2230: push dword ptr [ebp - 0x6f8]
0x4b2236: push 0x4b5f94
0x4b2248: lea edx, [ebx + 0x188]
0x4b224e: call 0x401470 <>
0x4b225d: call 0x4a7cf0 PAD dl, 0
0x4b2262: push dword ptr [ebp - 0x70c]
0x4b2268: push 0x4b5fa0
0x4b2274: mov edx, 0x4b5fac ; "UC"
0x4b227c: call 0x40311c <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x4b2290: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4b22a2: call 0x4a7cf0 PAD dl, 0
0x4b22a7: push dword ptr [ebp - 0x720]
0x4b22b8: call 0x4012b8 <_System__LStrCatN>
0x4b22c9: call 0x401478 <_System__VarFromLStr>
0x4b22d5: push 0x4b5fa0
0x4b22e7: lea edx, [ebx + 0x6f]
0x4b22ea: call 0x401470 <>
0x4b22f9: call 0x4a7cf0 PAD dl, 0
0x4b22fe: push dword ptr [ebp - 0x758]
0x4b2304: push 0x4b5fa0
0x4b231f: call 0x401440 <_System__VarFromInt>
0x4b232e: call 0x4a7cf0 PAD dl, 0
0x4b2333: push dword ptr [ebp - 0x76c]
0x4b2344: call 0x4012b8 <_System__LStrCatN>
0x4b2355: call 0x401478 <_System__VarFromLStr>
0x4b235a: push dword ptr [ebp - 0x744]
0x4b2360: push dword ptr [ebp - 0x748]
0x4b2366: push dword ptr [ebp - 0x74c]
0x4b236c: push dword ptr [ebp - 0x750]
0x4b237a: call 0x401478 <_System__VarFromLStr>
0x4b237f: push dword ptr [ebp - 0x780]
0x4b2385: push dword ptr [ebp - 0x784]
0x4b238b: push dword ptr [ebp - 0x788]
0x4b2391: push dword ptr [ebp - 0x78c]
0x4b23aa: call 0x41f828 <IIF>
0x4b23d6: push dword ptr [ebp - 0x1c]
0x4b23d9: push 0x4b5fa0
0x4b23f8: mov edx, 0x4b6074 ; "BAMT"
0x4b23fd: call 0x4012b0 <_System__LStrCat3>
0x4b2411: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b2422: call 0x401478 <_System__VarFromLStr>
0x4b2431: call 0x4a7cf0 PAD dl, 0
0x4b2436: push dword ptr [ebp - 0x790]
0x4b243c: push 0x4b5fa0
0x4b245b: mov edx, 0x4b6084 ; "CAMT"
0x4b2460: call 0x4012b0 <_System__LStrCat3>
0x4b2474: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b2485: call 0x401478 <_System__VarFromLStr>
0x4b2494: call 0x4a7cf0 PAD dl, 0
0x4b2499: push dword ptr [ebp - 0x7ac]
0x4b249f: push 0x4b5fa0
0x4b24be: mov edx, 0x4b6094 ; "DAMT"
0x4b24c3: call 0x4012b0 <_System__LStrCat3>
0x4b24d7: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b24e8: call 0x401478 <_System__VarFromLStr>
0x4b24f7: call 0x4a7cf0 PAD dl, 0
0x4b24fc: push dword ptr [ebp - 0x7c8]
0x4b2502: push 0x4b5fa0
0x4b2521: mov edx, 0x4b60a4 ; "EAMT"
0x4b2526: call 0x4012b0 <_System__LStrCat3>
0x4b253a: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b254b: call 0x401478 <_System__VarFromLStr>
0x4b255a: call 0x4a7cf0 PAD dl, 0
0x4b255f: push dword ptr [ebp - 0x7e4]
0x4b2565: push 0x4b5fa0
0x4b2584: mov edx, 0x4b60b4 ; "FAMT"
0x4b2589: call 0x4012b0 <_System__LStrCat3>
0x4b259d: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b25ae: call 0x401478 <_System__VarFromLStr>
0x4b25bd: call 0x4a7cf0 PAD dl, 0
0x4b25c2: push dword ptr [ebp - 0x800]
0x4b25c8: push 0x4b5fa0
0x4b25e7: mov edx, 0x4b60c4 ; "KAMT"
0x4b25ec: call 0x4012b0 <_System__LStrCat3>
0x4b2600: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b2611: call 0x401478 <_System__VarFromLStr>
0x4b2620: call 0x4a7cf0 PAD dl, 0
0x4b2625: push dword ptr [ebp - 0x81c]
0x4b262b: push 0x4b5fa0
0x4b264a: mov edx, 0x4b60d4 ; "ZAMT"
0x4b264f: call 0x4012b0 <_System__LStrCat3>
0x4b2663: call 0x40312c <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x4b2674: call 0x401478 <_System__VarFromLStr>
0x4b2683: call 0x4a7cf0 PAD dl, 0
0x4b2688: push dword ptr [ebp - 0x838]
0x4b2696: call 0x4012b8 <_System__LStrCatN>
0x4b26af: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4b26b4: call 0x401100 <_System__WriteLn>
0x4b26be: jmp 0x4b4f2f
0x4b26d7: mov edx, 0x4b60e4 ; "L.S."
0x4b26f7: mov edx, 0x4b60f4 ; "P.S."
0x4b2709: mov ecx, 0x4b6104 ; "3"
0x4b2711: call 0x4012b0 <_System__LStrCat3>
0x4b273a: call 0x4010b8 <>
0x4b274e: lea edx, [ebx + 0x179]
0x4b2754: call 0x401280 <>
0x4b2765: call 0x4018a4 <_Sysutils_Trim>
0x4b2781: mov edx, 0x4b6110 ; "X"
0x4b27ab: lea edx, [ebx + 0x68]
0x4b27ae: call 0x401470 <>
0x4b27bd: call 0x4a7cf0 PAD dl, 1
0x4b27c2: push dword ptr [ebp - 0x970]
0x4b27d5: lea edx, [ebx + 0x99]
0x4b27db: call 0x401470 <>
0x4b27ea: call 0x4a7cf0 PAD dl, 1
0x4b27ef: push dword ptr [ebp - 0x984]
0x4b2802: lea edx, [ebx + 0xff]
0x4b2808: call 0x401470 <>
0x4b2817: call 0x4a7cf0 PAD dl, 1
0x4b281c: push dword ptr [ebp - 0x998]
0x4b282f: lea edx, [ebx + 0x179]
0x4b2835: call 0x401470 <>
0x4b2844: call 0x4a7cf0 PAD dl, 1
0x4b2849: push dword ptr [ebp - 0x9ac]
0x4b285f: fld qword ptr [ebx + eax*8 + 0x198]
0x4b286c: call 0x401458 <_System__VarFromReal>
0x4b287b: call 0x4a7cf0 PAD dl, 1
0x4b2880: push dword ptr [ebp - 0x9c0]
0x4b2896: fld qword ptr [ebx + eax*8 + 0x190]
0x4b28a3: call 0x401458 <_System__VarFromReal>
0x4b28b2: call 0x4a7cf0 PAD dl, 1
0x4b28b7: push dword ptr [ebp - 0x9d4]
0x4b28cd: fld qword ptr [ebx + eax*8 + 0x1a0]
0x4b28da: call 0x401458 <_System__VarFromReal>
0x4b28e9: call 0x4a7cf0 PAD dl, 1
0x4b28ee: push dword ptr [ebp - 0x9e8]
0x4b2901: lea edx, [ebx + 0x7b]
0x4b2904: call 0x401470 <>
0x4b2913: call 0x4a7cf0 PAD dl, 0
0x4b2918: push dword ptr [ebp - 0x9fc]
0x4b292d: call 0x401478 <_System__VarFromLStr>
0x4b293c: call 0x4a7cf0 PAD dl, 1
0x4b2941: push dword ptr [ebp - 0xa10]
0x4b2956: call 0x401478 <_System__VarFromLStr>
0x4b2965: call 0x4a7cf0 PAD dl, 1
0x4b296a: push dword ptr [ebp - 0xa24]
0x4b297f: call 0x401478 <_System__VarFromLStr>
0x4b298e: call 0x4a7cf0 PAD dl, 0
0x4b2993: push dword ptr [ebp - 0xa38]
0x4b2999: push 0x4b5f94
0x4b29ab: lea edx, [ebx + 0x188]
0x4b29b1: call 0x401470 <>
0x4b29c0: call 0x4a7cf0 PAD dl, 0
0x4b29c5: push dword ptr [ebp - 0xa4c]
0x4b29cb: push 0x4b5fa0
0x4b29d7: mov edx, 0x4b5fac ; "UC"
0x4b29df: call 0x40311c <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x4b29f3: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4b2a05: call 0x4a7cf0 PAD dl, 0
0x4b2a0a: push dword ptr [ebp - 0xa60]
0x4b2a1b: call 0x4012b8 <_System__LStrCatN>
0x4b2a37: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4b2a3c: call 0x401100 <_System__WriteLn>
0x4b2aa3: call 0x43058c ; "U뗭겺`���SVW3��]��]�뗚덭��}땥3픘h�Cd�0d� �~����|�X��@i,Bt0,uX���X�" <>
0x4b2aad: call 0x403194 <@Apodset@TApolloTable@Query$qqrx17System@AnsiString>
0x4b2ad2: call 0x401478 <_System__VarFromLStr>
0x4b2ae1: call 0x4a7cf0 PAD dl, 1
0x4b2b3c: call 0x4b0054 <FUN_004b0054>
0x4b2b58: call 0x401280 <>
0x4b2b69: call 0x4018a4 <_Sysutils_Trim>
0x4b2b74: mov edx, 0x4b5ed0 ; "$"
0x4b2bcb: call 0x401280 <>
0x4b2bdc: call 0x4018a4 <_Sysutils_Trim>
0x4b2be7: mov edx, 0x4b6124 ; "$"
0x4b2c01: mov edx, 0x4b6130 ; "US2WON1"
0x4b2c06: call 0x401478 <_System__VarFromLStr>
0x4b2c0b: push dword ptr [ebp - 0xaa4]
0x4b2c11: push dword ptr [ebp - 0xaa8]
0x4b2c17: push dword ptr [ebp - 0xaac]
0x4b2c1d: push dword ptr [ebp - 0xab0]
0x4b2c29: mov edx, 0x4b6140 ; "US2WON"
0x4b2c2e: call 0x401478 <_System__VarFromLStr>
0x4b2c33: push dword ptr [ebp - 0xab4]
0x4b2c39: push dword ptr [ebp - 0xab8]
0x4b2c3f: push dword ptr [ebp - 0xabc]
0x4b2c45: push dword ptr [ebp - 0xac0]
0x4b2c60: fld qword ptr [eax + edx*8 + 0x1c8]
0x4b2c7b: call 0x41f828 <IIF>
0x4b2c8a: call 0x4a7cf0 PAD dl, 1
0x4b2c8f: jmp 0x4b3085
0x4b2cca: jmp dword ptr [eax*4 + 0x4b2ce0]
0x4b2d06: mov edx, 0x4b6154 ; "H1"
0x4b2d0b: call 0x401478 <_System__VarFromLStr>
0x4b2d1a: call 0x4a7cf0 PAD dl, 1
0x4b2d1f: jmp 0x4b3085
0x4b2d2e: mov edx, 0x4b6160 ; "H2"
0x4b2d33: call 0x401478 <_System__VarFromLStr>
0x4b2d42: call 0x4a7cf0 PAD dl, 1
0x4b2d47: jmp 0x4b3085
0x4b2d56: mov edx, 0x4b616c ; "H21"
0x4b2d5b: call 0x401478 <_System__VarFromLStr>
0x4b2d6a: call 0x4a7cf0 PAD dl, 1
0x4b2d6f: jmp 0x4b3085
0x4b2d7e: mov edx, 0x4b6178 ; "H31"
0x4b2d83: call 0x401478 <_System__VarFromLStr>
0x4b2d92: call 0x4a7cf0 PAD dl, 1
0x4b2d97: jmp 0x4b3085
0x4b2da6: mov edx, 0x4b6184 ; "H32"
0x4b2dab: call 0x401478 <_System__VarFromLStr>
0x4b2dba: call 0x4a7cf0 PAD dl, 1
0x4b2dbf: jmp 0x4b3085
0x4b2dce: mov edx, 0x4b6190 ; "H33"
0x4b2dd3: call 0x401478 <_System__VarFromLStr>
0x4b2de2: call 0x4a7cf0 PAD dl, 1
0x4b2de7: jmp 0x4b3085
0x4b2df3: push dword ptr [eax + 0xc]
0x4b2dfd: push dword ptr [eax + 0x10]
0x4b2e07: push dword ptr [eax + 0x24]
0x4b2e11: push dword ptr [eax + 0x28]
0x4b2e1b: push dword ptr [eax + 0x2c]
0x4b2e25: push dword ptr [eax + 0x30]
0x4b2e33: call 0x4012b8 <_System__LStrCatN>
0x4b2e52: call 0x401280 <>
0x4b2e89: call 0x401280 <>
0x4b2ea8: mov edx, 0x4b6154 ; "H1"
0x4b2ead: call 0x401478 <_System__VarFromLStr>
0x4b2ebc: call 0x4a7cf0 PAD dl, 1
0x4b2ec1: jmp 0x4b3085
0x4b2ee4: call 0x401280 <>
0x4b2f03: mov edx, 0x4b6160 ; "H2"
0x4b2f08: call 0x401478 <_System__VarFromLStr>
0x4b2f17: call 0x4a7cf0 PAD dl, 1
0x4b2f1c: jmp 0x4b3085
0x4b2f3f: call 0x401280 <>
0x4b2f5e: mov edx, 0x4b616c ; "H21"
0x4b2f63: call 0x401478 <_System__VarFromLStr>
0x4b2f72: call 0x4a7cf0 PAD dl, 1
0x4b2f77: jmp 0x4b3085
0x4b2f9a: call 0x401280 <>
0x4b2fb9: mov edx, 0x4b6178 ; "H31"
0x4b2fbe: call 0x401478 <_System__VarFromLStr>
0x4b2fcd: call 0x4a7cf0 PAD dl, 1
0x4b2fd2: jmp 0x4b3085
0x4b2ff5: call 0x401280 <>
0x4b3014: mov edx, 0x4b6184 ; "H32"
0x4b3019: call 0x401478 <_System__VarFromLStr>
0x4b3028: call 0x4a7cf0 PAD dl, 1
0x4b302d: jmp 0x4b3085
0x4b304d: call 0x401280 <>
0x4b306c: mov edx, 0x4b6190 ; "H33"
0x4b3071: call 0x401478 <_System__VarFromLStr>
0x4b3080: call 0x4a7cf0 PAD dl, 1
0x4b318c: call 0x4010b8 <>
0x4b3191: jmp 0x4b3692
0x4b31a9: call 0x401280 <>
0x4b31ba: call 0x4018a4 <_Sysutils_Trim>
0x4b31c5: mov edx, 0x4b61a4 ; "PR"
0x4b31e4: call 0x401280 <>
0x4b31f5: call 0x4018a4 <_Sysutils_Trim>
0x4b3200: mov edx, 0x4b61b0 ; "RR"
0x4b3228: fld qword ptr [edx + ecx*8 + 0x128]
0x4b3256: call 0x401280 <>
0x4b3262: push 0x4b61bc ; "식"
0x4b32e0: call 0x4010b8 <>
0x4b32e5: push 0x4b61cc ; "% "
0x4b3305: push dword ptr [ebp - 0xbe4]
0x4b330b: push 0x4b61dc ; "C"
0x4b331b: call 0x4012b8 <_System__LStrCatN>
0x4b334e: call 0x4010b8 <>
0x4b3353: jmp 0x4b3692
0x4b336b: jmp 0x4b3692
0x4b3383: call 0x401280 <>
0x4b3394: call 0x4018a4 <_Sysutils_Trim>
0x4b33bb: jmp 0x4b3692
0x4b33d3: call 0x401280 <>
0x4b33e4: call 0x4018a4 <_Sysutils_Trim>
0x4b33ef: mov edx, 0x4b61f0 ; ":"
0x4b3414: jmp 0x4b3692
0x4b3434: call 0x401280 <>
0x4b3459: call 0x4afeac <FUN_004afeac>
0x4b347c: call 0x401280 <>
0x4b34ab: jmp 0x4b3692
0x4b3557: call 0x401280 <>
0x4b3564: call 0x43086c <FUN_0043086c>
0x4b3569: jmp 0x4b3692
0x4b35ad: mov edx, 0x4b6248 ; "MLS"
0x4b35e6: push 0x4b6254 ; "MLSWBDX"
0x4b363a: call 0x401280 <>
0x4b364f: call 0x431758 <FUN_00431758>
0x4b3709: push 0x4b6264 ; ";ATT;ACC;"
0x4b373d: call 0x401280 <>
0x4b37e6: call 0x401280 <>
0x4b3805: lea edx, [ebx + 0x179]
0x4b380b: call 0x401280 <>
0x4b381c: call 0x4018a4 <_Sysutils_Trim>
0x4b3827: mov edx, 0x4b6278 ; "천원"
0x4b384a: call 0x401280 <>
0x4b385f: call 0x403154 <@Apodset@TApolloTable@Seek$qqr17System@AnsiString>
0x4b3880: mov edx, 0x4b6288 ; "TAMT"
0x4b3885: call 0x4012b0 <_System__LStrCat3>
0x4b389a: call 0x40310c <@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString>
0x4b390c: fld qword ptr [edx + eax*8 + 0x728]
0x4b3919: call 0x401458 <_System__VarFromReal>
0x4b391e: push dword ptr [ebp - 0xca4]
0x4b3924: push dword ptr [ebp - 0xca8]
0x4b392a: push dword ptr [ebp - 0xcac]
0x4b3930: push dword ptr [ebp - 0xcb0]
0x4b3942: fld qword ptr [edx + eax*8 + 0x718]
0x4b394f: call 0x401458 <_System__VarFromReal>
0x4b3954: push dword ptr [ebp - 0xcb4]
0x4b395a: push dword ptr [ebp - 0xcb8]
0x4b3960: push dword ptr [ebp - 0xcbc]
0x4b3966: push dword ptr [ebp - 0xcc0]
0x4b3981: fld qword ptr [eax + edx*8 + 0x1c8]
0x4b399c: call 0x41f828 <IIF>
0x4b39b5: call 0x401440 <_System__VarFromInt>
0x4b39e9: jmp 0x4b3ac5
0x4b3a4e: call 0x401280 <>
0x4b3aa5: call 0x4010b8 <>
0x4b3adf: call 0x401470 <>
0x4b3aee: call 0x4a7cf0 PAD dl, 1
0x4b3b14: call 0x401470 <>
0x4b3b19: push dword ptr [ebp - 0xd14]
0x4b3b1f: push dword ptr [ebp - 0xd18]
0x4b3b25: push dword ptr [ebp - 0xd1c]
0x4b3b2b: push dword ptr [ebp - 0xd20]
0x4b3b44: call 0x401470 <>
0x4b3b49: push dword ptr [ebp - 0xd24]
0x4b3b4f: push dword ptr [ebp - 0xd28]
0x4b3b55: push dword ptr [ebp - 0xd2c]
0x4b3b5b: push dword ptr [ebp - 0xd30]
0x4b3b7c: call 0x401280 <>
0x4b3ba4: call 0x401280 <>
0x4b3bb5: call 0x4018a4 <_Sysutils_Trim>
0x4b3bc0: mov edx, 0x4b61a4 ; "PR"
0x4b3bdf: call 0x401280 <>
0x4b3bf0: call 0x4018a4 <_Sysutils_Trim>
0x4b3bfb: mov edx, 0x4b61b0 ; "RR"
0x4b3c09: jmp 0x4b3c0d
0x4b3c15: call 0x41f828 <IIF>
0x4b3c24: call 0x4a7cf0 PAD dl, 1
0x4b3c30: call 0x4012a8 <_System__LStrCat>
0x4b3c41: call 0x401478 <_System__VarFromLStr>
0x4b3c5d: call 0x401478 <_System__VarFromLStr>
0x4b3c6c: call 0x4a7cf0 PAD dl, 1
0x4b3c7d: call 0x401478 <_System__VarFromLStr>
0x4b3c82: push dword ptr [ebp - 0xd58]
0x4b3c88: push dword ptr [ebp - 0xd5c]
0x4b3c8e: push dword ptr [ebp - 0xd60]
0x4b3c94: push dword ptr [ebp - 0xd64]
0x4b3ca2: call 0x401478 <_System__VarFromLStr>
0x4b3ca7: push dword ptr [ebp - 0xd7c]
0x4b3cad: push dword ptr [ebp - 0xd80]
0x4b3cb3: push dword ptr [ebp - 0xd84]
0x4b3cb9: push dword ptr [ebp - 0xd88]
0x4b3cd1: call 0x41f828 <IIF>
0x4b3d03: call 0x401470 <>
0x4b3d12: call 0x4a7cf0 PAD dl, 1
0x4b3d23: call 0x401478 <_System__VarFromLStr>
0x4b3d58: call 0x401470 <>
0x4b3d67: call 0x4a7cf0 PAD dl, 1
0x4b3d78: call 0x401478 <_System__VarFromLStr>
0x4b3dad: call 0x401470 <>
0x4b3dbc: call 0x4a7cf0 PAD dl, 1
0x4b3dcd: call 0x401478 <_System__VarFromLStr>
0x4b3dfc: fld qword ptr [eax + edx*8 + 0x128]
0x4b3e09: call 0x401458 <_System__VarFromReal>
0x4b3e18: call 0x4a7cf0 PAD dl, 1
0x4b3e29: call 0x401478 <_System__VarFromLStr>
0x4b3e61: fld qword ptr [eax + edx*8 + 0x1d8]
0x4b3e6f: call 0x41f880 <MROUNDUD>
0x4b3e7a: call 0x401458 <_System__VarFromReal>
0x4b3e7f: push dword ptr [ebp - 0xe40]
0x4b3e85: push dword ptr [ebp - 0xe44]
0x4b3e8b: push dword ptr [ebp - 0xe48]
0x4b3e91: push dword ptr [ebp - 0xe4c]
0x4b3ea1: call 0x401440 <_System__VarFromInt>
0x4b3ea6: push dword ptr [ebp - 0xe50]
0x4b3eac: push dword ptr [ebp - 0xe54]
0x4b3eb2: push dword ptr [ebp - 0xe58]
0x4b3eb8: push dword ptr [ebp - 0xe5c]
0x4b3ebe: push 0x4b6264 ; ";ATT;ACC;"
0x4b3ef2: call 0x401280 <>
0x4b3f0b: call 0x41f828 <IIF>
0x4b3f1a: call 0x4a7cf0 PAD dl, 1
0x4b3f2b: call 0x401478 <_System__VarFromLStr>
0x4b3f63: fld qword ptr [eax + edx*8 + 0x1d0]
0x4b3f71: call 0x41f880 <MROUNDUD>
0x4b3f7c: call 0x401458 <_System__VarFromReal>
0x4b3f81: push dword ptr [ebp - 0xe88]
0x4b3f87: push dword ptr [ebp - 0xe8c]
0x4b3f8d: push dword ptr [ebp - 0xe90]
0x4b3f93: push dword ptr [ebp - 0xe94]
0x4b3fa3: call 0x401440 <_System__VarFromInt>
0x4b3fa8: push dword ptr [ebp - 0xe98]
0x4b3fae: push dword ptr [ebp - 0xe9c]
0x4b3fb4: push dword ptr [ebp - 0xea0]
0x4b3fba: push dword ptr [ebp - 0xea4]
0x4b3fc0: push 0x4b6264 ; ";ATT;ACC;"
0x4b3ff4: call 0x401280 <>
0x4b400d: call 0x41f828 <IIF>
0x4b401c: call 0x4a7cf0 PAD dl, 1
0x4b402d: call 0x401478 <_System__VarFromLStr>
0x4b4065: fld qword ptr [eax + edx*8 + 0x1e0]
0x4b4073: call 0x41f880 <MROUNDUD>
0x4b407e: call 0x401458 <_System__VarFromReal>
0x4b4083: push dword ptr [ebp - 0xed0]
0x4b4089: push dword ptr [ebp - 0xed4]
0x4b408f: push dword ptr [ebp - 0xed8]
0x4b4095: push dword ptr [ebp - 0xedc]
0x4b40a5: call 0x401440 <_System__VarFromInt>
0x4b40aa: push dword ptr [ebp - 0xee0]
0x4b40b0: push dword ptr [ebp - 0xee4]
0x4b40b6: push dword ptr [ebp - 0xee8]
0x4b40bc: push dword ptr [ebp - 0xeec]
0x4b40c2: push 0x4b6264 ; ";ATT;ACC;"
0x4b40f6: call 0x401280 <>
0x4b410f: call 0x41f828 <IIF>
0x4b411e: call 0x4a7cf0 PAD dl, 1
0x4b412f: call 0x401478 <_System__VarFromLStr>
0x4b4164: call 0x401470 <>
0x4b4173: call 0x4a7cf0 PAD dl, 1
0x4b4184: call 0x401478 <_System__VarFromLStr>
0x4b41cd: mov eax, 0x4b62a0 ; "00"
0x4b41d2: call 0x4019d4 <_Sysutils_FormatFloat>
0x4b41e3: call 0x401478 <_System__VarFromLStr>
0x4b41f2: call 0x4a7cf0 PAD dl, 1
0x4b4203: call 0x401478 <_System__VarFromLStr>
0x4b423b: call 0x401440 <_System__VarFromInt>
0x4b424a: call 0x4a7cf0 PAD dl, 1
0x4b425b: call 0x401478 <_System__VarFromLStr>
0x4b4293: call 0x401440 <_System__VarFromInt>
0x4b42a2: call 0x4a7cf0 PAD dl, 1
0x4b42b3: call 0x401478 <_System__VarFromLStr>
0x4b42db: fld qword ptr [edx + eax*8 + 0x428]
0x4b42e8: call 0x401458 <_System__VarFromReal>
0x4b42ed: push dword ptr [ebp - 0xfac]
0x4b42f3: push dword ptr [ebp - 0xfb0]
0x4b42f9: push dword ptr [ebp - 0xfb4]
0x4b42ff: push dword ptr [ebp - 0xfb8]
0x4b4305: mov al, 0x2a
0x4b4320: call 0x401470 <>
0x4b4325: push dword ptr [ebp - 0xfbc]
0x4b432b: push dword ptr [ebp - 0xfc0]
0x4b4331: push dword ptr [ebp - 0xfc4]
0x4b4337: push dword ptr [ebp - 0xfc8]
0x4b435c: call 0x41f828 <IIF>
0x4b436b: call 0x4a7cf0 PAD dl, 1
0x4b437c: call 0x401478 <_System__VarFromLStr>
0x4b43a5: call 0x401440 <_System__VarFromInt>
0x4b43aa: push dword ptr [ebp - 0xff0]
0x4b43b0: push dword ptr [ebp - 0xff4]
0x4b43b6: push dword ptr [ebp - 0xff8]
0x4b43bc: push dword ptr [ebp - 0xffc]
0x4b43cf: call 0x401440 <_System__VarFromInt>
0x4b43d4: push dword ptr [ebp - 0x1000]
0x4b43da: push dword ptr [ebp - 0x1004]
0x4b43e0: push dword ptr [ebp - 0x1008]
0x4b43e6: push dword ptr [ebp - 0x100c]
0x4b440d: call 0x41f828 <IIF>
0x4b4424: call 0x4a7cf0 PAD dl, 0
0x4b4435: call 0x401478 <_System__VarFromLStr>
0x4b445c: call 0x401478 <_System__VarFromLStr>
0x4b4473: call 0x4a7cf0 PAD dl, 0
0x4b4484: call 0x401478 <_System__VarFromLStr>
0x4b44a3: call 0x4b0508 <>
0x4b44b5: call 0x401478 <_System__VarFromLStr>
0x4b44ba: push dword ptr [ebp - 0x1044]
0x4b44c0: push dword ptr [ebp - 0x1048]
0x4b44c6: push dword ptr [ebp - 0x104c]
0x4b44cc: push dword ptr [ebp - 0x1050]
0x4b44d8: call 0x4afb78 <>
0x4b44e9: call 0x401478 <_System__VarFromLStr>
0x4b44ee: push dword ptr [ebp - 0x1058]
0x4b44f4: push dword ptr [ebp - 0x105c]
0x4b44fa: push dword ptr [ebp - 0x1060]
0x4b4500: push dword ptr [ebp - 0x1064]
0x4b4518: call 0x41f828 <IIF>
0x4b454b: call 0x401470 <>
0x4b4579: call 0x401280 <>
0x4b4598: call 0x401280 <>
0x4b45aa: call 0x4a7e64 <FUN_004a7e64>
0x4b45bb: call 0x401478 <_System__VarFromLStr>
0x4b45ee: call 0x401470 <>
0x4b4623: call 0x401470 <>
0x4b4628: push dword ptr [ebp - 0x10cc]
0x4b462e: push dword ptr [ebp - 0x10d0]
0x4b4634: push dword ptr [ebp - 0x10d4]
0x4b463a: push dword ptr [ebp - 0x10d8]
0x4b4640: mov al, 0x45
0x4b465b: call 0x401470 <>
0x4b4660: push dword ptr [ebp - 0x10dc]
0x4b4666: push dword ptr [ebp - 0x10e0]
0x4b466c: push dword ptr [ebp - 0x10e4]
0x4b4672: push dword ptr [ebp - 0x10e8]
0x4b46a2: call 0x41f828 <IIF>
0x4b46b1: call 0x4a7cf0 PAD dl, 0
0x4b46c2: call 0x401478 <_System__VarFromLStr>
0x4b46f5: call 0x401470 <>
0x4b470d: mov al, 0x20
0x4b4728: call 0x401470 <>
0x4b472d: push dword ptr [ebp - 0x110c]
0x4b4733: push dword ptr [ebp - 0x1110]
0x4b4739: push dword ptr [ebp - 0x1114]
0x4b473f: push dword ptr [ebp - 0x1118]
0x4b4745: mov al, 0x2f
0x4b4760: call 0x401470 <>
0x4b4765: push dword ptr [ebp - 0x111c]
0x4b476b: push dword ptr [ebp - 0x1120]
0x4b4771: push dword ptr [ebp - 0x1124]
0x4b4777: push dword ptr [ebp - 0x1128]
0x4b479c: call 0x41f828 <IIF>
0x4b47cf: call 0x401470 <>
0x4b4806: call 0x401440 <_System__VarFromInt>
0x4b4815: call 0x4a7cf0 PAD dl, 0
0x4b4826: call 0x401478 <_System__VarFromLStr>
0x4b4859: call 0x401470 <>
0x4b4884: call 0x401470 <>
0x4b48ac: call 0x401508 <@System@@Write0Variant$qqrrpvrx14System@Variant>
0x4b48b1: call 0x401100 <_System__WriteLn>
0x4b48e1: lea edx, [ebx + 0x68]
0x4b4920: call 0x401280 <>
0x4b492d: call 0x43086c <FUN_0043086c>
0x4b4932: jmp 0x4b4f2f
0x4b494b: mov edx, 0x4b60e4 ; "L.S."
0x4b496b: mov edx, 0x4b60f4 ; "P.S."
0x4b497d: mov ecx, 0x4b6104 ; "3"
0x4b4985: call 0x4012b0 <_System__LStrCat3>
0x4b49ae: call 0x4010b8 <>
0x4b49c0: lea edx, [ebx + 0x68]
0x4b49c3: call 0x401470 <>
0x4b49d2: call 0x4a7cf0 PAD dl, 1
0x4b49d7: push dword ptr [ebp - 0x11d0]
0x4b49ea: lea edx, [ebx + 0x99]
0x4b49f0: call 0x401470 <>
0x4b49ff: call 0x4a7cf0 PAD dl, 1
0x4b4a04: push dword ptr [ebp - 0x11e4]
0x4b4a17: lea edx, [ebx + 0xff]
0x4b4a1d: call 0x401470 <>
0x4b4a2c: call 0x4a7cf0 PAD dl, 1
0x4b4a31: push dword ptr [ebp - 0x11f8]
0x4b4a44: lea edx, [ebx + 0x179]
0x4b4a4a: call 0x401470 <>
0x4b4a59: call 0x4a7cf0 PAD dl, 1
0x4b4a5e: push dword ptr [ebp - 0x120c]
0x4b4a74: fld qword ptr [ebx + eax*8 + 0x198]
0x4b4a81: call 0x401458 <_System__VarFromReal>
0x4b4a90: call 0x4a7cf0 PAD dl, 1
0x4b4a95: push dword ptr [ebp - 0x1220]
0x4b4aab: fld qword ptr [ebx + eax*8 + 0x190]
0x4b4ab8: call 0x401458 <_System__VarFromReal>
0x4b4ac7: call 0x4a7cf0 PAD dl, 1
0x4b4acc: push dword ptr [ebp - 0x1234]
0x4b4ae2: fld qword ptr [ebx + eax*8 + 0x1a0]
0x4b4aef: call 0x401458 <_System__VarFromReal>
0x4b4afe: call 0x4a7cf0 PAD dl, 1
0x4b4b03: push dword ptr [ebp - 0x1248]
0x4b4b16: lea edx, [ebx + 0x7b]
0x4b4b19: call 0x401470 <>
0x4b4b28: call 0x4a7cf0 PAD dl, 0
0x4b4b2d: push dword ptr [ebp - 0x125c]
0x4b4b42: call 0x401478 <_System__VarFromLStr>
0x4b4b51: call 0x4a7cf0 PAD dl, 1
0x4b4b56: push dword ptr [ebp - 0x1270]
0x4b4b6b: call 0x401478 <_System__VarFromLStr>
0x4b4b7a: call 0x4a7cf0 PAD dl, 1
0x4b4b7f: push dword ptr [ebp - 0x1284]
0x4b4b94: call 0x401478 <_System__VarFromLStr>
0x4b4ba3: call 0x4a7cf0 PAD dl, 0
0x4b4ba8: push dword ptr [ebp - 0x1298]
0x4b4bae: push 0x4b5f94
0x4b4bc0: lea edx, [ebx + 0x188]
0x4b4bc6: call 0x401470 <>
0x4b4bd5: call 0x4a7cf0 PAD dl, 0
0x4b4bda: push dword ptr [ebp - 0x12ac]
0x4b4be0: push 0x4b5fa0
0x4b4bec: mov edx, 0x4b5fac ; "UC"
0x4b4bf4: call 0x40311c <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x4b4c08: call 0x401450 <@System@@VarFromBool$qqrr14System@Variantxo>
0x4b4c1a: call 0x4a7cf0 PAD dl, 0
0x4b4c1f: push dword ptr [ebp - 0x12c0]
0x4b4c30: call 0x4012b8 <_System__LStrCatN>
0x4b4c43: call 0x401318 <@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString>
0x4b4c48: call 0x401100 <_System__WriteLn>
0x4b4caf: call 0x43058c ; "U뗭겺`���SVW3��]��]�뗚덭��}땥3픘h�Cd�0d� �~����|�X��@i,Bt0,uX���X�" <>
0x4b4cb9: call 0x403194 <@Apodset@TApolloTable@Query$qqrx17System@AnsiString>
0x4b4cd2: lea edx, [ebx + 0x68]
0x4b4cd5: call 0x401470 <>
0x4b4ce9: mov edx, 0x4b5ec0 ; "CODE"
0x4b4cee: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4cf9: lea edx, [ebx + 0x99]
0x4b4cff: call 0x401470 <>
0x4b4d13: mov edx, 0x4b62e0 ; "NAME"
0x4b4d18: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4d23: lea edx, [ebx + 0xff]
0x4b4d29: call 0x401470 <>
0x4b4d3d: mov edx, 0x4b62f0 ; "SIZE"
0x4b4d42: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4d4d: lea edx, [ebx + 0x179]
0x4b4d53: call 0x401470 <>
0x4b4d67: mov edx, 0x4b6300 ; "UNIT"
0x4b4d6c: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4d7a: fld qword ptr [ebx + eax*8 + 0x198]
0x4b4d87: call 0x401458 <_System__VarFromReal>
0x4b4d9b: mov edx, 0x4b6310 ; "MPRC"
0x4b4da0: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4dae: fld qword ptr [ebx + eax*8 + 0x190]
0x4b4dbb: call 0x401458 <_System__VarFromReal>
0x4b4dcf: mov edx, 0x4b6320 ; "LPRC"
0x4b4dd4: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4de2: fld qword ptr [ebx + eax*8 + 0x1a0]
0x4b4def: call 0x401458 <_System__VarFromReal>
0x4b4e03: mov edx, 0x4b6330 ; "EPRC"
0x4b4e08: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4e13: lea edx, [ebx + 0x7b]
0x4b4e16: call 0x401470 <>
0x4b4e2a: mov edx, 0x4b6340 ; "LINK"
0x4b4e2f: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4e3a: lea edx, [ebx + 0x68]
0x4b4e3d: call 0x401280 <>
0x4b4e54: call 0x452e78 ; "U뗭Q�" <>
0x4b4e65: call 0x401478 <_System__VarFromLStr>
0x4b4e79: mov edx, 0x4b6350 ; "FORM"
0x4b4e7e: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4e9c: lea edx, [ebx + 0x68]
0x4b4edb: call 0x401280 <>
0x4b4ee8: call 0x43086c <FUN_0043086c>
0x4b4ef7: call 0x401440 <_System__VarFromInt>
0x4b4f0b: mov edx, 0x4b6360 ; "COMPEXC"
0x4b4f10: call 0x402f84 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x4b4f23: jmp 0x4b4f2f
0x4b4f25: mov eax, 0x4b6370 ; "i = 0"
@@ -0,0 +1,217 @@
0x514b00: add byte ptr [ebx - 0x3c74efae], cl
0x514b06: call 0x404790 <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x514b0b: mov eax, dword ptr [ebp - 4]
0x514b0e: cmp byte ptr [eax], 0x43
0x514b11: je 0x514b44
0x514b13: mov edx, dword ptr [0x5e618c]
0x514b19: mov edx, dword ptr [edx + 0x2a0]
0x514b1f: mov eax, ebx
0x514b21: call 0x404780 <@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString>
0x514b26: test ax, ax
0x514b29: jne 0x514b44
0x514b2b: mov edx, dword ptr [0x5e618c]
0x514b31: mov edx, dword ptr [edx + 0x200]
0x514b37: mov eax, ebx
0x514b39: call 0x404778 <@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString>
0x514b3e: dec eax
0x514b3f: sub eax, 2
0x514b42: jae 0x514b4d
0x514b44: mov eax, dword ptr [ebp + 0xc]
0x514b47: mov dword ptr [eax], 0xff
0x514b4d: xor eax, eax
0x514b4f: pop edx
0x514b50: pop ecx
0x514b51: pop ecx
0x514b52: mov dword ptr fs:[eax], edx
0x514b55: push 0x514b6a
0x514b5a: lea eax, [ebp - 4]
0x514b62: ret
0x514b63: jmp 0x401200
0x514b68: jmp 0x514b5a
0x514b6a: pop ebx
0x514b6b: pop ecx
0x514b6c: pop ebp
0x514b6d: ret 0xc
0x514b70: mov edx, dword ptr [0x5fd480]
0x514b76: mov edx, dword ptr [edx]
0x514b78: mov edx, dword ptr [edx + 0x30]
0x514b7b: xchg edx, eax
0x514b7c: call 0x44bca0 <>
0x514b81: ret
0x514b82: mov eax, eax
0x514b84: push ebp
0x514b85: mov ebp, esp
0x514b87: mov ecx, 0x27
0x514b8c: push 0
0x514b8e: push 0
0x514b90: dec ecx
0x514b91: jne 0x514b8c
0x514b93: push ecx
0x514b94: push ebx
0x514b95: mov ebx, eax
0x514b97: xor eax, eax
0x514b99: push ebp
0x514b9a: push 0x514db3
0x514b9f: push dword ptr fs:[eax]
0x514ba2: mov dword ptr fs:[eax], esp
0x514ba5: xor eax, eax
0x514ba7: push ebp
0x514ba8: push 0x514d55
0x514bad: push dword ptr fs:[eax]
0x514bb0: mov dword ptr fs:[eax], esp
0x514bb3: mov eax, dword ptr [0x5e5f80]
0x514bb8: mov eax, dword ptr [eax]
0x514bba: mov eax, dword ptr [eax + 0x98]
0x514bc0: call 0x403d20 <@Db@TDataSet@DisableControls$qqrv>
0x514bc5: lea edx, [ebp - 0x10c]
0x514bcb: mov eax, dword ptr [ebx + 0x3c8]
0x514bd1: mov eax, dword ptr [eax + 0x168]
0x514bd7: mov eax, dword ptr [eax + 0xc]
0x514bda: mov eax, dword ptr [eax]
0x514bdc: call 0x401158 <@System@TObject@ClassName$qqrp17System@TMetaClass>
0x514be1: lea edx, [ebp - 0x10c]
0x514be7: lea eax, [ebp - 0xc]
0x514bea: call 0x401288 <>
0x514bef: mov eax, dword ptr [ebp - 0xc]
0x514bf2: lea edx, [ebp - 4]
0x514bf5: call 0x401de0 <@Sysutils@UpperCase$qqrx17System@AnsiString>
0x514bfa: mov eax, dword ptr [0x5e5f80]
0x514bff: mov eax, dword ptr [eax]
0x514c01: mov eax, dword ptr [eax + 0x98]
0x514c07: call 0x403d38 <@Db@TDataSet@Edit$qqrv>
0x514c0c: lea ecx, [ebp - 0x114]
0x514c12: mov eax, dword ptr [0x5e5f80]
0x514c17: mov eax, dword ptr [eax]
0x514c19: mov eax, dword ptr [eax + 0x98]
0x514c1f: mov edx, 0x514dc8 ; "NAME"
0x514c24: call 0x404790 <@Apodset@TApolloTable@GetString$qqr17System@AnsiString>
0x514c29: mov eax, dword ptr [ebp - 0x114]
0x514c2f: lea edx, [ebp - 0x110]
0x514c35: call 0x401e30 <@Sysutils@Trim$qqrx17System@AnsiString>
0x514c3a: cmp dword ptr [ebp - 0x110], 0
0x514c41: jne 0x514cc2
0x514c43: lea edx, [ebp - 0x118]
0x514c49: mov eax, dword ptr [ebx + 0x350]
0x514c4f: call 0x4037e8 <@Dialogs@TOpenDialog@GetFileName$qqrv>
0x514c54: mov eax, dword ptr [ebp - 0x118]
0x514c5a: lea edx, [ebp - 8]
0x514c5d: call 0x401f30 <@Sysutils@ExtractFileName$qqrx17System@AnsiString>
0x514c62: lea eax, [ebp - 8]
0x514c65: push eax
0x514c66: lea edx, [ebp - 0x11c]
0x514c6c: mov eax, dword ptr [ebp - 8]
0x514c6f: call 0x401f38 <@Sysutils@ExtractFileExt$qqrx17System@AnsiString>
0x514c74: mov eax, dword ptr [ebp - 0x11c]
0x514c7a: call 0x4012a0 <_System__LStrLen>
0x514c7f: push eax
0x514c80: mov eax, dword ptr [ebp - 8]
0x514c83: call 0x4012a0 <_System__LStrLen>
0x514c88: mov ecx, eax
0x514c8a: pop eax
0x514c8b: sub ecx, eax
0x514c8d: xor edx, edx
0x514c8f: mov eax, dword ptr [ebp - 8]
0x514c92: call 0x4012e8 <_System__LStrCopy>
0x514c97: lea eax, [ebp - 0x12c]
0x514c9d: mov edx, dword ptr [ebp - 8]
0x514ca0: call 0x4013f8 <@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString>
0x514ca5: lea ecx, [ebp - 0x12c]
0x514cab: mov eax, dword ptr [0x5e5f80]
0x514cb0: mov eax, dword ptr [eax]
0x514cb2: mov eax, dword ptr [eax + 0x98]
0x514cb8: mov edx, 0x514dc8 ; "NAME"
0x514cbd: call 0x403d08 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x514cc2: lea eax, [ebp - 0x13c]
0x514cc8: mov edx, dword ptr [ebp - 4]
0x514ccb: call 0x4013f8 <@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString>
0x514cd0: lea ecx, [ebp - 0x13c]
0x514cd6: mov eax, dword ptr [0x5e5f80]
0x514cdb: mov eax, dword ptr [eax]
0x514cdd: mov eax, dword ptr [eax + 0x98]
0x514ce3: mov edx, 0x514dd8 ; "SIZE"
0x514ce8: call 0x403d08 <@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant>
0x514ced: mov eax, dword ptr [0x5e5f80]
0x514cf2: mov eax, dword ptr [eax]
0x514cf4: mov eax, dword ptr [eax + 0x98]
0x514cfa: mov edx, 0x514de8 ; "IFORM"
0x514cff: call 0x403d10 <@Db@TDataSet@FieldByName$qqrx17System@AnsiString>
0x514d04: mov edx, dword ptr [0x5fe330]
0x514d0a: call 0x401190 <@System@@AsClass$qqrp14System@TObjectp17System@TMetaClass>
0x514d0f: push eax
0x514d10: mov eax, dword ptr [ebx + 0x3c8]
0x514d16: call 0x4d6e1c <>
0x514d1b: mov edx, eax
0x514d1d: pop eax
0x514d1e: call 0x403ca8 <@Db@TBlobField@LoadFromStream$qqrp15Classes@TStream>
0x514d23: mov eax, dword ptr [0x5e5f80]
0x514d28: mov eax, dword ptr [eax]
0x514d2a: mov eax, dword ptr [eax + 0x98]
0x514d30: call 0x4046f0 <@Apodset@TApolloTable@Commit$qqrv>
0x514d35: xor eax, eax
0x514d37: pop edx
0x514d38: pop ecx
0x514d39: pop ecx
0x514d3a: mov dword ptr fs:[eax], edx
0x514d3d: push 0x514d5c
0x514d42: mov eax, dword ptr [0x5e5f80]
0x514d47: mov eax, dword ptr [eax]
0x514d49: mov eax, dword ptr [eax + 0x98]
0x514d4f: call 0x403d28 <@Db@TDataSet@EnableControls$qqrv>
0x514d54: ret
0x514d55: jmp 0x401200
0x514d5a: jmp 0x514d42
0x514d5c: xor eax, eax
0x514d5e: pop edx
0x514d5f: pop ecx
0x514d60: pop ecx
0x514d61: mov dword ptr fs:[eax], edx
0x514d64: push 0x514dba
0x514d69: lea eax, [ebp - 0x13c]
0x514d6f: mov edx, dword ptr [0x5fce10]
0x514d75: mov ecx, 2
0x514d7a: call 0x401348 <@System@@FinalizeArray$qqrpvt1ui>
0x514d7f: lea eax, [ebp - 0x11c]
0x514d8a: lea eax, [ebp - 0x118]
0x514d95: lea eax, [ebp - 0x114]
0x514d9b: mov edx, 2
0x514da5: lea eax, [ebp - 0xc]
0x514da8: mov edx, 3
0x514db2: ret
0x514db3: jmp 0x401200
0x514db8: jmp 0x514d69
0x514dba: pop ebx
0x514dbb: mov esp, ebp
0x514dbd: pop ebp
0x514dbe: ret
0x514dbf: add bh, bh
0x514dc1: .byte 0xff
0x514dc2: .byte 0xff
0x514dc3: inc dword ptr [eax + eax]
0x514dc6: add byte ptr [eax], al
0x514dc8: dec esi
0x514dc9: inc ecx
0x514dca: dec ebp
0x514dcb: inc ebp
0x514dcc: add byte ptr [eax], al
0x514dce: add byte ptr [eax], al
0x514dd0: .byte 0xff
0x514dd1: .byte 0xff
0x514dd2: .byte 0xff
0x514dd3: inc dword ptr [eax + eax]
0x514dd6: add byte ptr [eax], al
0x514dd8: push ebx
0x514dd9: dec ecx
0x514dda: pop edx
0x514ddb: inc ebp
0x514ddc: add byte ptr [eax], al
0x514dde: add byte ptr [eax], al
0x514de0: .byte 0xff
0x514de1: .byte 0xff
0x514de2: .byte 0xff
0x514de3: inc dword ptr [0x49000000]
0x514de9: inc esi
0x514dea: dec edi
0x514deb: push edx
0x514dec: dec ebp
0x514ded: add byte ptr [eax], al
0x514def: .byte 0x00
+26 -5
View File
@@ -17,21 +17,42 @@ from conv_jaje import CAPS, SHEET, WIDTHS, amount, build_jaje_xlsx, caps_from_in
def test_layout_and_rounding():
import openpyxl
head = {"PNAME": "임도 공사", "PNUM": "A-1", "BUDGET": "₩1,000원", "수요기관": "국유림", "계약일자": "2026.11.14"}
head = {
"PNAME": "임도 공사",
"PNUM": "A-1",
"BUDGET": "₩1,000원",
"수요기관": "국유림",
"계약일자": "2026.11.14",
}
rows = [
{"NAME": "레미콘", "NAME2": "25-21-120", "SIZE": "", "UNIT": "M3", "QTY": 12.345, "PRICE": 93000},
{
"NAME": "레미콘",
"NAME2": "25-21-120",
"SIZE": "",
"UNIT": "M3",
"QTY": 12.345,
"PRICE": 93000,
},
{"NAME": "철근", "SIZE": "D13", "UNIT": "TON", "QTY": 0.125, "PRICE": 850001},
]
wb = openpyxl.load_workbook(io.BytesIO(build_jaje_xlsx(head, rows)))
ws = wb[SHEET]
assert ws["A2"].value.endswith("임도 공사") and ws["G2"].value.endswith("A-1")
assert ws["A3"].value == "수 요 기 관" and ws["B3"].value == "국유림" and ws["C4"].value == "₩1,000원"
assert (
ws["A3"].value == "수 요 기 관"
and ws["B3"].value == "국유림"
and ws["C4"].value == "₩1,000원"
)
assert ws["F5"].value == "2026.11.14"
assert [ws.cell(7, j).value for j in range(1, 8)] == [d for _k, d in CAPS]
assert [ws.column_dimensions[c].width for c in "ABCDEFG"] == WIDTHS
assert ws["A8"].value == "레미콘\n25-21-120" and ws["C8"].value == 12.35 and ws["D8"].value == "M3"
assert (
ws["A8"].value == "레미콘\n25-21-120" and ws["C8"].value == 12.35 and ws["D8"].value == "M3"
)
assert ws["F8"].value == amount(rows[0]) == round(12.35 * 93000)
assert ws["C9"].value == 0.13 and ws["F9"].value == 110500 # 0.125 → 0.13(사사오입) · 0.13×850001=110500.13
assert (
ws["C9"].value == 0.13 and ws["F9"].value == 110500
) # 0.125 → 0.13(사사오입) · 0.13×850001=110500.13
assert ws.max_row == 9
+113 -19
View File
@@ -40,17 +40,57 @@ def dbf(fields, rows):
COSTN_F = [C("CODE", 6), C("NAME", 30), C("SIZE", 30), C("UNIT", 10), C("BQCODE", 16)]
COSTN_F += [N("AMT"), N("LAMT"), N("MAMT"), N("SAMT"), N("D_AMT"), N("D_LAMT"), C("GUN", 1), L("UC")]
COSTN_F += [
N("AMT"),
N("LAMT"),
N("MAMT"),
N("SAMT"),
N("D_AMT"),
N("D_LAMT"),
C("GUN", 1),
L("UC"),
]
COSTN_F += [N("AMT_1D"), C("PG_1D", 12), N("AMT_6D"), C("PG_D", 12)]
COSTN_ROWS = [
{"CODE": "M00001", "NAME": "철근", "UNIT": "TON", "AMT": 1000, "MAMT": 1000, "D_AMT": 900, "GUN": "H"},
{"CODE": "M00001"[:1] + "00002", "NAME": "잡재료", "UNIT": "M%", "AMT": 5, "MAMT": 5, "GUN": "H"},
{"CODE": "B00003", "NAME": "굴삭기", "UNIT": " x ", "AMT": 50, "LAMT": 30, "AMT_1D": 7, "PG_1D": "12"},
{
"CODE": "M00001",
"NAME": "철근",
"UNIT": "TON",
"AMT": 1000,
"MAMT": 1000,
"D_AMT": 900,
"GUN": "H",
},
{
"CODE": "M00001"[:1] + "00002",
"NAME": "잡재료",
"UNIT": "M%",
"AMT": 5,
"MAMT": 5,
"GUN": "H",
},
{
"CODE": "B00003",
"NAME": "굴삭기",
"UNIT": " x ",
"AMT": 50,
"LAMT": 30,
"AMT_1D": 7,
"PG_1D": "12",
},
{"CODE": "B00004", "NAME": "대가", "UNIT": "M3", "AMT": 80, "AMT_6D": 3, "PG_D": "1"},
{"CODE": "Q00001", "NAME": "버림", "UNIT": "식", "AMT": 1},
{"CODE": "L00001", "NAME": "보통인부", "UNIT": "인", "AMT": 150, "LAMT": 150, "UC": "T"},
]
BDQ_F = [C("BDCODE", 6), C("CODE", 6), C("T_NAME", 20), N("QTY", 14, 4), C("BIMOK", 1), L("DEVD"), L("T_EXIST")]
BDQ_F = [
C("BDCODE", 6),
C("CODE", 6),
C("T_NAME", 20),
N("QTY", 14, 4),
C("BIMOK", 1),
L("DEVD"),
L("T_EXIST"),
]
BDQ_ROWS = [
{"BDCODE": "B00003", "CODE": "L00001", "QTY": 1.5, "T_EXIST": "T"},
{"BDCODE": "B00004", "CODE": "B00003", "QTY": 2},
@@ -59,16 +99,38 @@ BDQ_ROWS = [
{"BDCODE": "M00001", "CODE": "L00001", "QTY": 1},
]
PRJ_F = [C("PNUM", 20), C("PNAME", 40), N("PCODE", 3, 0), N("PCLASS", 2, 0), N("MCOST", 14, 0)]
PRJ_F += [N("T_COST", 14, 0), N("MCOST1", 14, 0), N("T_COST3", 14, 0), N("K_ORD", 2, 0), N("XXXNM", 1, 0)]
PRJ_F += [
N("T_COST", 14, 0),
N("MCOST1", 14, 0),
N("T_COST3", 14, 0),
N("K_ORD", 2, 0),
N("XXXNM", 1, 0),
]
PRJ_ROWS = [
{"PNUM": "A-1", "PNAME": "옛 공사", "PCODE": 11, "PCLASS": 0, "MCOST": 100, "T_COST": 300},
{"PNUM": "A-2", "PNAME": "변경", "PCODE": 12, "PCLASS": 6, "MCOST1": 50, "T_COST3": 9, "K_ORD": 2},
{
"PNUM": "A-2",
"PNAME": "변경",
"PCODE": 12,
"PCLASS": 6,
"MCOST1": 50,
"T_COST3": 9,
"K_ORD": 2,
},
]
BOQ_F = [C("ITNUM", 10), C("NAME", 30), C("UNIT", 6), N("QTY", 14, 3), N("AMT"), C("BDCODE", 6)]
BOQ_F += [N("T_AMOUNT"), N("QTY1", 14, 3), L("EXIST"), C("UNIT1", 6), N("SORTCODE", 13, 0)]
BOQ_ROWS = [
{"ITNUM": "1", "NAME": "토공", "QTY": 0, "SORTCODE": 1},
{"ITNUM": "", "NAME": "굴착", "UNIT": "M3", "QTY": 12.5, "AMT": 80, "BDCODE": "B00003", "T_AMOUNT": 1000},
{
"ITNUM": "",
"NAME": "굴착",
"UNIT": "M3",
"QTY": 12.5,
"AMT": 80,
"BDCODE": "B00003",
"T_AMOUNT": 1000,
},
{"ITNUM": "", "NAME": "옛 줄", "QTY1": 3, "EXIST": "T", "UNIT1": "식", "SORTCODE": 3},
]
START_INI = "[START]\r\nARENM=B\r\nACDNM=7\r\nJMOK1=단가A\r\n[PRINT]\r\nCBFONT=돋움\r\n[PROJECT]\r\nPMODE={pm}\r\n"
@@ -84,9 +146,13 @@ def old_7x(pmode=1):
"BDQTY.DBF": dbf(BDQ_F, BDQ_ROWS),
"PRJLST.DBF": dbf(PRJ_F, PRJ_ROWS),
"GRASS.DBF": dbf([C("BDCODE", 6)], []),
"KONGJONG.DBF": dbf([C("DESCRIP", 30), C("DESSIZE", 30)], [{"DESCRIP": "토공", "DESSIZE": "가"}]),
"KONGJONG.DBF": dbf(
[C("DESCRIP", 30), C("DESSIZE", 30)], [{"DESCRIP": "토공", "DESSIZE": "가"}]
),
"BOQ11.DBF": dbf(BOQ_F, BOQ_ROWS),
"CONLD.DBF": dbf([C("BDCODE", 6)], [{"BDCODE": "B00003"}, {"BDCODE": "M00001"}, {"BDCODE": "B00003"}]),
"CONLD.DBF": dbf(
[C("BDCODE", 6)], [{"BDCODE": "B00003"}, {"BDCODE": "M00001"}, {"BDCODE": "B00003"}]
),
"MEMO.INI": b"[A]\r\nB=1\r\n",
}
@@ -110,9 +176,15 @@ def mem_var(name, typ, val):
def old_dos():
mem = mem_var("ARENM", "C", "A->") + mem_var("LANNM", "N", 2) + mem_var("EX1NM", "N", 1500)
mem += mem_var("SUBNM", "C", "버림") + mem_var("TOGNM", "L", True) + b"\x1a"
f = {k: v for k, v in old_7x().items() if k not in ("START.INI", "IMG.DB", "KONGJONG.DBF", "MEMO.INI")}
f = {
k: v
for k, v in old_7x().items()
if k not in ("START.INI", "IMG.DB", "KONGJONG.DBF", "MEMO.INI")
}
f["START.MEM"] = mem
f["COSTN1.DBF"] = dbf([C("CODE", 6), N("AMT_A"), C("PG_D", 12)], [{"CODE": "M00001", "AMT_A": 11, "PG_D": "77"}])
f["COSTN1.DBF"] = dbf(
[C("CODE", 6), N("AMT_A"), C("PG_D", 12)], [{"CODE": "M00001", "AMT_A": 11, "PG_D": "77"}]
)
f["BOQ11.DBF"] = dbf(
[C("ITNUM", 10), C("DESCRIP", 30), C("DESSIZE", 30), N("QTY", 14, 3), C("BDCODE", 6)],
[{"DESCRIP": "굴착", "DESSIZE": "토사", "QTY": 4, "BDCODE": "B00003"}],
@@ -135,8 +207,13 @@ def test_detect_version_rules():
assert detect(win8) == 131 and detect(win8 | {"STINI.MEM": b""}) == 141
lacking = {k: v for k, v in old_7x().items() if k != "GRASS.DBF"}
assert detect(lacking) == 100 and detect({"A.TXT": b""}) == 0
jodal = {k: b"" for k in ("GLOBAL.INI", "M.TXT", "L.TXT", "E.TXT", "W.TXT", "UNIT.TXT", "UNITPART.TXT")}
jodal |= {k: b"" for k in ("J.TXT", "JPART.TXT", "JUNIT.TXT", "DANGA.TXT", "DANGA.DBF", "DANGA.DBT")}
jodal = {
k: b""
for k in ("GLOBAL.INI", "M.TXT", "L.TXT", "E.TXT", "W.TXT", "UNIT.TXT", "UNITPART.TXT")
}
jodal |= {
k: b"" for k in ("J.TXT", "JPART.TXT", "JUNIT.TXT", "DANGA.TXT", "DANGA.DBF", "DANGA.DBT")
}
jodal |= {k: b"" for k in ("GONGJONG.TXT", "MAIN.TXT", "MAINPART.TXT")}
assert detect(jodal) == 200
@@ -160,7 +237,10 @@ def test_7x_costn_rules(tpl):
x = rows["X00003"]
assert float(x["TAMT1"]) == 50 and float(x["LAMT1"]) == 30
assert float(x.get("AMT_11", 7) or 0) == 7 and x.get("PG_11", "12") == "12"
assert float(rows["B00004"].get("AMT_61", 3) or 0) == 3 and rows["B00004"].get("PG_1", "1") in ("1", "1.0")
assert float(rows["B00004"].get("AMT_61", 3) or 0) == 3 and rows["B00004"].get("PG_1", "1") in (
"1",
"1.0",
)
assert rows["L00001"]["UC"] == "T"
@@ -178,11 +258,19 @@ def test_7x_bdqty_prj_kong_boq_ini(tpl):
kong = _rows(out["KONGJONG.DBF"])
assert [(r["CODE"], r["NAME"], r["SIZE"]) for r in kong] == [("1", "토공", "가")]
boq = _rows(out["BOQ11.DBF"])
assert boq[1]["NAME1"] == "굴착" and boq[1]["BDCODE1"] == "X00003" and float(boq[1]["QTY1"]) == 12.5
assert (
boq[1]["NAME1"] == "굴착"
and boq[1]["BDCODE1"] == "X00003"
and float(boq[1]["QTY1"]) == 12.5
)
assert float(boq[1]["T_AMT1"]) == 1000 and float(boq[2]["QTY2"]) == 3
assert str(boq[2]["EXIST1"]).strip() == "1" and boq[2]["UNIT2"] == "식"
ini = ini_dict(out["START8X.INI"].decode("cp949"))
assert ini["START"]["ARENM"] == "2" and ini["START"]["BPNNM"] == "7" and ini["START"]["JMOK1"] == "단가A"
assert (
ini["START"]["ARENM"] == "2"
and ini["START"]["BPNNM"] == "7"
and ini["START"]["JMOK1"] == "단가A"
)
assert ini["START"]["JMOK2"] == "물가 자료" and ini["PRINT"]["FONT"] == "돋움"
assert ini["EQUIPMENT"]["CONLD"] == "X00003" and out["STINI.MEM"] == out["START8X.INI"]
assert out["MEMO.INI"] == b"[A]\r\nB=1\r\n"
@@ -194,13 +282,19 @@ def test_dos_rules(tpl):
rows = {r["CODE"]: r for r in _rows(out["COSTN.DBF"])}
if "AMT_12" in rows["M00001"]:
assert float(rows["M00001"]["AMT_12"]) == 11 and rows["M00001"]["PG_11"] == "77"
assert "X00003" in rows and float(rows.get("B00004", {}).get("AMT_61", 0) or 0) == 0 # DOS 는 AMT_n 없음
assert (
"X00003" in rows and float(rows.get("B00004", {}).get("AMT_61", 0) or 0) == 0
) # DOS 는 AMT_n 없음
kong = _rows(out["KONGJONG.DBF"])
assert [r["NAME"] for r in kong] == [n.rstrip() for n in KONG_DOS] and kong[0]["CODE"] == "1"
boq = _rows(out["BOQ11.DBF"])
assert boq[0]["NAME1"] == "굴착" and boq[0]["SIZE1"] == "토사" and boq[0]["BDCODE1"] == "X00003"
ini = ini_dict(out["START8X.INI"].decode("cp949"))
assert ini["START"]["ARENM"] == "A->" and ini["START"]["SUBNM"] == "" and ini["PRINT"]["LANNM"] == "2.000000"
assert (
ini["START"]["ARENM"] == "A->"
and ini["START"]["SUBNM"] == ""
and ini["PRINT"]["LANNM"] == "2.000000"
)
assert ini["PRINT"]["TOGNM"] == "1" and ini["EQUIPMENT"]["EX1NM"] == "1500.000000"
assert ini["EQUIPMENT"]["CONLD"] == "B00003" and ini["PROJECT"]["PMODE"] == "1"
assert "STINI.MEM" not in out or out["STINI.MEM"] != out["START8X.INI"]
+13 -3
View File
@@ -54,7 +54,13 @@ def test_kind_by_extension():
def test_new_code_put_and_read_back(files):
data = _bmp()
out, rep = put_image(files, "i00009", data, "다리 사진.bmp")
assert rep == {"code": "I00009", "new": True, "kind": "TBITMAP", "bytes": len(data), "name": NEW_NAME}
assert rep == {
"code": "I00009",
"new": True,
"kind": "TBITMAP",
"bytes": len(data),
"name": NEW_NAME,
}
f2 = dict(files) | out
got, kind, mime = get_image(f2, "I00009")
assert got == data and kind == "TBITMAP" and mime == "image/bmp"
@@ -88,7 +94,9 @@ def test_sniff_when_size_blank(files):
t.set(find_rows(t, "CODE")["I00011"], "SIZE", "")
f2 = dict(files) | out | {"COSTN.DBF": t.to_bytes()}
assert get_image(f2, "I00011")[1] == "TBITMAP"
assert SixMemo(out["COSTN.SMT"]).read(t.raw(find_rows(t, "CODE")["I00011"], "IFORM"))[:2] == b"BM"
assert (
SixMemo(out["COSTN.SMT"]).read(t.raw(find_rows(t, "CODE")["I00011"], "IFORM"))[:2] == b"BM"
)
def test_api_put_writes_only_costn(files, tmp_path, monkeypatch):
@@ -101,4 +109,6 @@ def test_api_put_writes_only_costn(files, tmp_path, monkeypatch):
assert set(changed) <= {"COSTN.DBF", "COSTN.SMT"}
res = A.img_get(A.ImgReq(source_path=r["saved_stc"], code="I00012"))
assert res.headers["X-Img-Kind"] == "TBITMAP" and res.body[:2] == b"BM"
assert any(x["CODE"] == "I00012" for x in A.img_list(A.ImgReq(source_path=r["saved_dir"]))["rows"])
assert any(
x["CODE"] == "I00012" for x in A.img_list(A.ImgReq(source_path=r["saved_dir"]))["rows"]
)
+67 -8
View File
@@ -25,8 +25,22 @@ from kanjub_cfg import stage_slots # noqa: E402
from stc_read import Source # noqa: E402
# 검사기 cmp 값(열 개수)
CMP = {"Main.Txt": 3, "M.Txt": 0x13, "L.Txt": 7, "E.Txt": 9, "W.Txt": 9, "J.Txt": 9, "GongJong.Txt": 4}
CMP |= {"Unit.Txt": 10, "JUnit.Txt": 10, "Danga.Txt": 10, "MainPart.Txt": 0x1F, "UnitPart.Txt": 0x1C}
CMP = {
"Main.Txt": 3,
"M.Txt": 0x13,
"L.Txt": 7,
"E.Txt": 9,
"W.Txt": 9,
"J.Txt": 9,
"GongJong.Txt": 4,
}
CMP |= {
"Unit.Txt": 10,
"JUnit.Txt": 10,
"Danga.Txt": 10,
"MainPart.Txt": 0x1F,
"UnitPart.Txt": 0x1C,
}
CMP |= {"JPart.Txt": 0x13}
STC = next((ROOT / "tools/stmate-test/work_dbf").glob("*.STC"), None)
TAB, EXT, SUB, CRLF = "\t", "\x05", "\x07", b"\r\n"
@@ -53,7 +67,9 @@ def test_check_lines_counts_and_code_chars():
assert J.check_lines("L.Txt", good + CRLF) == []
bad = J.build_line(["l0001", f"가{TAB}나", "", "인", 1, "", ""])
errs = J.check_lines("L.Txt", good + CRLF + bad)
assert any("203002" in e and "Line : 2" in e for e in errs) and any("코드 글자" in e for e in errs)
assert any("203002" in e and "Line : 2" in e for e in errs) and any(
"코드 글자" in e for e in errs
)
def test_num_text_exttostr():
@@ -68,7 +84,14 @@ def test_export_bundle_lines_follow_rules():
r = export_bundle(str(STC))
assert r["series"] == 1 and all(not v for v in r["checks"].values())
t = DbfTable(src.files["COSTN.DBF"])
want = {"L": "L.Txt", "M": "M.Txt", "S": "E.Txt", "W": "W.Txt", "B": "Unit.Txt", "X": "JUnit.Txt"}
want = {
"L": "L.Txt",
"M": "M.Txt",
"S": "E.Txt",
"W": "W.Txt",
"B": "Unit.Txt",
"X": "JUnit.Txt",
}
want["D"] = "Danga.Txt"
lines = {k: v.split(CRLF) for k, v in r["files"].items()}
seen: dict[str, int] = {}
@@ -85,7 +108,9 @@ def test_export_bundle_lines_follow_rules():
if k == "L":
assert cols[4] == J.num_text(lam) and ext[0] == t.get(i, "BQCODE")
if k == "M":
assert cols[4] == J.num_text(mam) and cols[6] == J.num_text(float(t.get(i, "AMT_11") or 0))
assert cols[4] == J.num_text(mam) and cols[6] == J.num_text(
float(t.get(i, "AMT_11") or 0)
)
if k == "S":
assert cols[4:7] == ["0", "0", J.num_text(sam)]
if k in "BXD":
@@ -101,11 +126,24 @@ def test_export_bundle_lines_follow_rules():
def test_unit_rules():
rec = {"CODE": "B00001", "NAME": "a", "SIZE": "", "UNIT": "l.s.", "EQCODE": "", "BQCODE": "", "UC": False}
rec = {
"CODE": "B00001",
"NAME": "a",
"SIZE": "",
"UNIT": "l.s.",
"EQCODE": "",
"BQCODE": "",
"UC": False,
}
rec |= {"L": 1.0, "M": 2.0, "E": 3.0, "AMT": [0] * 5, "PG": [""] * 5, "PG_J": "", "PG_S": ""}
assert J.split_line(code_line(rec, False, "")[1])[0][3] == "l.s.3"
assert J.split_line(code_line(rec | {"CODE": "W00001", "UNIT": "T%"}, False, "")[1])[0][3] == "T%*100"
assert J.split_line(code_line(rec | {"CODE": "S00001", "UNIT": " $ "}, False, "")[1])[0][3] == "$"
assert (
J.split_line(code_line(rec | {"CODE": "W00001", "UNIT": "T%"}, False, "")[1])[0][3]
== "T%*100"
)
assert (
J.split_line(code_line(rec | {"CODE": "S00001", "UNIT": " $ "}, False, "")[1])[0][3] == "$"
)
assert code_line(rec | {"CODE": "I00001"}, False, "") is None
@@ -134,3 +172,24 @@ def test_hal_rate_float32_factor():
def test_fifth_series_slot():
"""변경 4차 = 계열 5 — 저장 칸 5 를 차수로 읽음."""
assert stage_slots({"1_C_KANNO": 1, "5_C_KANNO": 2}) == [1, 5]
def test_jdl_api_export_and_check():
if STC is None:
pytest.skip("표본 STC 없음")
import base64
import api_jdl as A
r = A.jdl_export(A.JdlReq(source_path=str(STC)))
assert (
r["series"] == 1
and r["missing"]
and "L.Txt" in r["first"]
and r["first"]["L.Txt"]["F_CODE"]
)
z = A.jdl_export_zip(A.JdlReq(source_path=str(STC)))
assert z.body[:2] == b"PK"
bad = base64.b64encode(J.build_line(["L1", "x\ty", "", "", "", "", ""])).decode()
c = A.jdl_check(A.JdlCheckReq(files={"L.TXT": bad, "readme.md": ""}))["checks"]
assert c["L.TXT"] and c["readme.md"] == ["검사 대상 아님"]
+20 -4
View File
@@ -18,8 +18,13 @@ from conv_jb import JB_DIR, list_jb, match_project, read_jb
from conv_win8 import convert as convert_win8
from conv_win8_ini import detect as detect_win8
from conv_xls_apply import import_boq, register
from conv_xls_out import export_boq_xlsx, export_code_xlsx, export_jaje_xlsx, import_code_xlsx
from conv_xls_out import import_jaje_xlsx
from conv_xls_out import (
export_boq_xlsx,
export_code_xlsx,
export_jaje_xlsx,
import_code_xlsx,
import_jaje_xlsx,
)
from conv_xml import xml_to_project
from conv_xml_cfg import apply_settings, options, validate
from fastapi import APIRouter, HTTPException
@@ -151,7 +156,10 @@ class Win8Req(BaseModel):
def _old_files(req: Win8Req) -> dict:
if req.files:
return {k.rsplit("/", 1)[-1].upper(): base64.b64decode(v.split(",", 1)[-1]) for k, v in req.files.items()}
return {
k.rsplit("/", 1)[-1].upper(): base64.b64decode(v.split(",", 1)[-1])
for k, v in req.files.items()
}
p = pathlib.Path(req.old_path or "")
if not req.old_path or not p.is_dir():
raise HTTPException(404, f"폴더 없음: {req.old_path}")
@@ -181,7 +189,15 @@ def api_jaje_sum_xlsx(req: JajeSumReq):
def api_win8_check(req: Win8Req):
"""판 가리기(Chk_STDir) — 111 DOS · 120~129 7.x · 130~149 Win8 · 200 조달청 TEXT."""
v = detect_win8(_old_files(req))
kind = "DOS" if 110 <= v <= 119 else "7.x" if 120 <= v <= 129 else "Win8" if 130 <= v <= 149 else ""
kind = (
"DOS"
if 110 <= v <= 119
else "7.x"
if 120 <= v <= 129
else "Win8"
if 130 <= v <= 149
else ""
)
return {"version": v, "kind": kind or ("조달청 TEXT" if v == 200 else "구버전 자료 아님")}
+3 -1
View File
@@ -84,5 +84,7 @@ def img_put(req: ImgPutReq):
raise HTTPException(400, "base64 아님")
changed, rep = _guard(put_image, s.files, req.code, data, req.filename, req.to_jpeg)
files = dict(s.files) | changed
res = write_output(_root(), safe_name(req.target_folder_name or s.path.stem), files, s.names, s.entries)
res = write_output(
_root(), safe_name(req.target_folder_name or s.path.stem), files, s.names, s.entries
)
return {**res, "report": rep}
+3 -1
View File
@@ -60,7 +60,9 @@ def jdl_export_zip(req: JdlReq):
for name, data in r["files"].items():
z.writestr(name, data)
disp = "attachment; filename=JDL_TEXT.zip"
return Response(content=buf.getvalue(), media_type="application/zip", headers={"Content-Disposition": disp})
return Response(
content=buf.getvalue(), media_type="application/zip", headers={"Content-Disposition": disp}
)
@router.post("/api/jdl/check")
+6 -2
View File
@@ -85,8 +85,12 @@ def build_jaje_xlsx(head: dict, rows: list[dict], caps: list[str] | None = None)
for i, r in enumerate(part, start=8):
qty = half(float(r.get("QTY") or 0), 2)
price = float(r.get("PRICE") or 0)
ws.cell(i, 1, _join(r.get("NAME", ""), r.get("NAME2", ""))).alignment = Alignment(wrap_text=True)
ws.cell(i, 2, _join(r.get("SIZE", ""), r.get("SIZE2", ""))).alignment = Alignment(wrap_text=True)
ws.cell(i, 1, _join(r.get("NAME", ""), r.get("NAME2", ""))).alignment = Alignment(
wrap_text=True
)
ws.cell(i, 2, _join(r.get("SIZE", ""), r.get("SIZE2", ""))).alignment = Alignment(
wrap_text=True
)
ws.cell(i, 3, qty)
ws.cell(i, 4, r.get("UNIT", ""))
ws.cell(i, 5, price)
+66 -13
View File
@@ -28,13 +28,29 @@ _FLAGS = [(k, k) for k in ("NAGCD", "UC", "K_S", "GUN", "JOJAK", "BOKSA")]
_BK = [(f"{c}AMT", f"{c}AMT1") for c in "BCDEFG"] + [("HAMT", "ZAMT1"), ("KAMT", "KAMT1")]
_BK += [(f"D_{c}AMT", f"{c}AMT2") for c in "BCDEFG"] + [("D_HAMT", "ZAMT2"), ("D_KAMT", "KAMT2")]
COSTN_DOS = _HEAD + _AMT + _FLAGS + _BK
_AP = [(f"AMT_{n}D", f"AMT_{n}1") for n in range(1, 6)] + [(f"PG_{n}D", f"PG_{n}1") for n in range(1, 6)]
_AP += [(f"AMT_{n}B", f"AMT_{n}2") for n in range(1, 6)] + [(f"PG_{n}B", f"PG_{n}2") for n in range(1, 6)]
_AP += [("PG_J", "PG_J"), ("PG_D", "PG_1"), ("PG_B", "PG_2"), ("AMT_61", "AMT_1"), ("AMT_62", "AMT_2")]
_AP = [(f"AMT_{n}D", f"AMT_{n}1") for n in range(1, 6)] + [
(f"PG_{n}D", f"PG_{n}1") for n in range(1, 6)
]
_AP += [(f"AMT_{n}B", f"AMT_{n}2") for n in range(1, 6)] + [
(f"PG_{n}B", f"PG_{n}2") for n in range(1, 6)
]
_AP += [
("PG_J", "PG_J"),
("PG_D", "PG_1"),
("PG_B", "PG_2"),
("AMT_61", "AMT_1"),
("AMT_62", "AMT_2"),
]
_AP += [("AMT_6D", "AMT_61"), ("AMT_6B", "AMT_62")]
COSTN_7X = _HEAD + _AMT + _FLAGS + _AP + _BK + [("PP", "PP")]
COSTN1_M = [("AMT_A", "AMT_12"), ("AMT_B", "AMT_22"), ("AMT_C", "AMT_32"), ("AMT_D", "AMT_11")]
COSTN1_M += [("AMT_E", "AMT_21"), ("AMT_F", "AMT_31"), ("PG_A", "PG_12"), ("PG_B", "PG_22"), ("PG_C", "PG_32")]
COSTN1_M += [
("AMT_E", "AMT_21"),
("AMT_F", "AMT_31"),
("PG_A", "PG_12"),
("PG_B", "PG_22"),
("PG_C", "PG_32"),
]
COSTN1_M += [("PG_D", "PG_11"), ("PG_E", "PG_21"), ("PG_F", "PG_31"), ("PG_J", "PG_J")]
BDQTY_MAP = [("BDCODE", "BDCODE"), ("CODE", "CODE"), ("T_NAME", "NAME1"), ("T_SIZE", "SIZE1")]
BDQTY_MAP += [("QTY", "QTY1"), ("BIMOK", "BIMOK"), ("DEVD", "DEVD1")]
@@ -48,18 +64,40 @@ PRJ_7X += [(f"{c}3", f"{c}4") for c in _COST] + [("T_COST3", "TCOST4")]
PRJ_7X += [("XXXNM", "XX1NM"), ("IXXNM", "XX2NM"), ("JXXNM", "XX3NM"), ("KXXNM", "XX4NM")]
PRJ_7X += [("CHAMT", "CHAMT"), ("K_ORD", "K_ORD")]
_BOQ = [("QTY", "QTY1")] + [(a, b) for a, b in _AMT[:4]]
_BOQ += [("T_AMOUNT", "T_AMT1"), ("L_AMOUNT", "L_AMT1"), ("M_AMOUNT", "M_AMT1"), ("S_AMOUNT", "S_AMT1")]
_BOQ += [
("T_AMOUNT", "T_AMT1"),
("L_AMOUNT", "L_AMT1"),
("M_AMOUNT", "M_AMT1"),
("S_AMOUNT", "S_AMT1"),
]
_BOQ += [("BDCODE", "BDCODE1"), ("QTY1", "QTY2")] + _AMT[4:]
_BOQ += [("DT_AMOUNT", "T_AMT2"), ("DL_AMOUNT", "L_AMT2"), ("DM_AMOUNT", "M_AMT2"), ("DS_AMOUNT", "S_AMT2")]
_BOQ += [
("DT_AMOUNT", "T_AMT2"),
("DL_AMOUNT", "L_AMT2"),
("DM_AMOUNT", "M_AMT2"),
("DS_AMOUNT", "S_AMT2"),
]
_BOQ += [("QTY2", "QTY3"), ("T_AMOUNT2", "T_AMT3"), ("QTY3", "QTY4"), ("T_AMOUNT3", "T_AMT4")]
_BOQ += [(k, k) for k in ("SORTCODE", "ENDCODE", "BQCODE")]
BOQ_7X = [("ITNUM", "ITNUM"), ("NAME", "NAME1"), ("SIZE", "SIZE1"), ("UNIT", "UNIT1")] + _BOQ
BOQ_7X += [(k, k) for k in ("RL", "RM", "RS", "UC")]
BOQ_DOS = [("ITNUM", "ITNUM"), ("DESCRIP", "NAME1"), ("DESSIZE", "SIZE1"), ("UNIT", "UNIT1")] + _BOQ
BQM_7X = [("ITNUM", "ITNUM"), ("NAME", "NAME1"), ("SIZE", "SIZE1"), ("UNIT", "UNIT1"), ("QTY", "QTY1")]
BQM_7X = [
("ITNUM", "ITNUM"),
("NAME", "NAME1"),
("SIZE", "SIZE1"),
("UNIT", "UNIT1"),
("QTY", "QTY1"),
]
BQM_7X += [("AMT", "TAMT1"), ("T_AMOUNT", "T_AMT1"), ("BDCODE", "BDCODE1")]
BQM_7X += [(k, k) for k in ("RATE", "BIGO", "SORTCODE", "ENDCODE")]
KONG_DOS = ["토 공", "배 수 공", "구 조 물 공", "포 장 공", "조 경 공"]
KONG_DOS = [
"토 공",
"배 수 공",
"구 조 물 공",
"포 장 공",
"조 경 공",
]
KONG_DOS += ["부 대 공", "기 타 공 "]
UNMAPPED = [
"간접비 설정 이관(PRJ_MEMO — 7.x 0x48abb0 · DOS 0x4922e4) → 틀 설정 유지",
@@ -122,7 +160,9 @@ def _is_t(v) -> bool:
return str(v).strip().upper() in ("T", "Y", "1", "TRUE")
def conv_costn(src: list[dict], pairs, have: set[str], m_extra: dict[str, dict]) -> tuple[list[dict], dict]:
def conv_costn(
src: list[dict], pairs, have: set[str], m_extra: dict[str, dict]
) -> tuple[list[dict], dict]:
"""COSTN 행 옮기기 — (행, 옛 B → 새 X)."""
out, b2x = [], {}
for r in src:
@@ -213,7 +253,9 @@ def convert(old: dict, template: dict, pname: str = "") -> tuple[dict, dict]:
notes: list[str] = []
conld = b_list(_rows(_table(old, "CONLD.DBF")))
contd = b_list(_rows(_table(old, "CONTD.DBF")))
m_extra = {r.get("CODE", "").strip(): r for r in _rows(_table(old, "COSTN1.DBF"))} if dos else {}
m_extra = (
{r.get("CODE", "").strip(): r for r in _rows(_table(old, "COSTN1.DBF"))} if dos else {}
)
have = _fields(template["COSTN.DBF"])
costn_src = _rows(_table(old, "COSTN.DBF"))
costn, b2x = conv_costn(costn_src, COSTN_DOS if dos else COSTN_7X, have, m_extra)
@@ -247,7 +289,10 @@ def convert(old: dict, template: dict, pname: str = "") -> tuple[dict, dict]:
kong = [{"CODE": f" {i}", "NAME": n} for i, n in enumerate(KONG_DOS, 1)]
else:
src_k = _rows(_table(old, "KONGJONG.DBF"))
kong = [{"CODE": str(i), "NAME": r.get("DESCRIP", ""), "SIZE": r.get("DESSIZE", "")} for i, r in enumerate(src_k, 1)]
kong = [
{"CODE": str(i), "NAME": r.get("DESCRIP", ""), "SIZE": r.get("DESSIZE", "")}
for i, r in enumerate(src_k, 1)
]
out["KONGJONG.DBF"] = _build(template["KONGJONG.DBF"], kong)
boq_tpl = template.get("BOQ11.DBF")
for k in [k for k in out if re.match(r"^BOQ\d+\.DBF$", k)]:
@@ -265,8 +310,16 @@ def convert(old: dict, template: dict, pname: str = "") -> tuple[dict, dict]:
if not dos and _table(old, f"BQM{pc}.DBF") is not None:
notes.append(f"BQM{pc}.DBF 있음 — 틀에 BQM 구조가 없어 옮기지 않음")
if b2x:
conld = "".join(b2x.get(conld[i : i + 6], conld[i : i + 6]) for i in range(0, len(conld), 6)) if not dos else conld
contd = "".join(b2x.get(contd[i : i + 6], contd[i : i + 6]) for i in range(0, len(contd), 6)) if not dos else contd
conld = (
"".join(b2x.get(conld[i : i + 6], conld[i : i + 6]) for i in range(0, len(conld), 6))
if not dos
else conld
)
contd = (
"".join(b2x.get(contd[i : i + 6], contd[i : i + 6]) for i in range(0, len(contd), 6))
if not dos
else contd
)
if dos:
ini, n2 = ini_from_dos(old.get("START.MEM", b""), conld, contd)
notes += n2
+73 -12
View File
@@ -20,8 +20,26 @@ RULES = [
(110, ("START.MEM", "FORM.DBF", "KANJUB2.DBF", "COSTN1.DBF")),
(150, ("START8X", "COSTA.DBF", "COSTN.SMT", "PRJLST.SMT", "SYSINFO.DBF")),
]
JODAL = ("GLOBAL.INI", "M.TXT", "L.TXT", "E.TXT", "W.TXT", "UNIT.TXT", "UNITPART.TXT", "J.TXT", "JPART.TXT")
JODAL += ("JUNIT.TXT", "DANGA.TXT", "DANGA.DBF", "DANGA.DBT", "GONGJONG.TXT", "MAIN.TXT", "MAINPART.TXT")
JODAL = (
"GLOBAL.INI",
"M.TXT",
"L.TXT",
"E.TXT",
"W.TXT",
"UNIT.TXT",
"UNITPART.TXT",
"J.TXT",
"JPART.TXT",
)
JODAL += (
"JUNIT.TXT",
"DANGA.TXT",
"DANGA.DBF",
"DANGA.DBT",
"GONGJONG.TXT",
"MAIN.TXT",
"MAINPART.TXT",
)
RULES.append((200, JODAL))
CORE = ("COSTN.DBF", "BDQTY.DBF", "PRJLST.DBF", "GRASS.DBF")
@@ -62,14 +80,32 @@ def detect(files: dict) -> int:
# 7.x [START] 키 — (대상 키, 원본 키, 기본값)
START_7X = [("BMKNM", "BMKNM", "MLST"), ("ACDNM", "ACDNM", "1"), ("BPNNM", "ACDNM", "1")]
START_7X += [("KCDNM", "KCDNM", "1"), ("ZCDNM", "ZCDNM", "2"), ("CHGNM", "CHGNM", "1"), ("CHBNM", "CHGNM", "1")]
START_7X += [("CHNNM", "CHNNM", "1"), ("BCDNM", "BCDNM", "0"), ("DCDNM", "DCDNM", "0"), ("ICDNM", "ICDNM", "0")]
START_7X += [
("KCDNM", "KCDNM", "1"),
("ZCDNM", "ZCDNM", "2"),
("CHGNM", "CHGNM", "1"),
("CHBNM", "CHGNM", "1"),
]
START_7X += [
("CHNNM", "CHNNM", "1"),
("BCDNM", "BCDNM", "0"),
("DCDNM", "DCDNM", "0"),
("ICDNM", "ICDNM", "0"),
]
START_7X += [("LCDNM", "LCDNM", "1"), ("MCDNM", "MCDNM", "1"), ("PCDNM", "PCDNM", "10")]
START_7X += [("SCDNM", "SCDNM", "0"), ("WCDNM", "WCDNM", "0"), ("SUBNM", "SUBNM", ""), ("LMGNM", "LMGNM", "4")]
START_7X += [
("SCDNM", "SCDNM", "0"),
("WCDNM", "WCDNM", "0"),
("SUBNM", "SUBNM", ""),
("LMGNM", "LMGNM", "4"),
]
START_7X += [("MKRNM", "MKRNM", "5"), ("TMGNM", "TMGNM", "6"), ("JEMNM", "JEMNM", "123456")]
JMOK = ["가격 정보", "물가 자료", "유통 물가", "견적단가1", "견적단가2", "적용 단가"]
START_7X += [(f"JMOK{i}", f"JMOK{i}", v) for i, v in enumerate(JMOK, 1)]
START_7X += [(f"JMK{i}0", f"JMK{i}0", v) for i, v in enumerate(["가.정", "물.자", "유.물", "견적 1", "견적 2"], 1)]
START_7X += [
(f"JMK{i}0", f"JMK{i}0", v)
for i, v in enumerate(["가.정", "물.자", "유.물", "견적 1", "견적 2"], 1)
]
START_7X += [("JUKNM", "JUKNM", "0")]
EQUIP_7X = [("RXXNM", "START", "RXXNM", "1/8 * 16/12 * 25/20"), ("RXTNM", "START", "RXTNM", "")]
EQUIP_7X += [("EXLNM1", "START", "EX1NM", "1000"), ("EXHNM1", "START", "EX2NM", "1000")]
@@ -92,16 +128,29 @@ def ini_from_7x(start_ini: bytes, conld: str, contd: str) -> bytes:
g = lambda sec, k, d: src.get(sec, {}).get(k, d) # noqa: E731
start = [("ARENM", "1" if g("START", "ARENM", "A->") == "A->" else "2")]
start += [(t, g("START", s, d)) for t, s, d in START_7X]
prt = [("ORDNM", g("PRINT", "ORDNM", "")), ("FONT", g("PRINT", "CBFONT", "굴림체")), ("F_COL0", "clBlack")]
prt = [
("ORDNM", g("PRINT", "ORDNM", "")),
("FONT", g("PRINT", "CBFONT", "굴림체")),
("F_COL0", "clBlack"),
]
prt += [("F_COL1", g("PRINT", "COLDAN", "clRed")), ("F_COL2", g("PRINT", "COLBYN", "clBlack"))]
prt += [("SH_TYP0", g("PRINT", "FOMNM", "0")), ("SAN_TYP", g("PRINT", "LANNM", "0"))]
prt += [("SAN_AMT", "1"), ("FLT_JAB", "3")]
eq = [(t, g(s, k, d)) for t, s, k, d in EQUIP_7X]
eq += [(k, v) for k, v in (("CONLD", conld), ("CONTD", contd)) if v]
prj = [("PCODE", "XXXX"), ("PMODE", g("PROJECT", "PMODE", "1")), ("PNAME", g("PROJECT", "PNAME", "프로젝트명"))]
prj = [
("PCODE", "XXXX"),
("PMODE", g("PROJECT", "PMODE", "1")),
("PNAME", g("PROJECT", "PNAME", "프로젝트명")),
]
prj.append(("P_DIR", ""))
nag = [("NAGNM", src["START"]["NAGNM"])] if "NAGNM" in src.get("START", {}) else []
for t, k in (("ST_MHAL", "PMHAL"), ("EQ_LHAL", "EQ_L"), ("EQ_MHAL", "EQ_M"), ("EQ_SHAL", "EQ_S")):
for t, k in (
("ST_MHAL", "PMHAL"),
("EQ_LHAL", "EQ_L"),
("EQ_MHAL", "EQ_M"),
("EQ_SHAL", "EQ_S"),
):
if k in src.get("PROJECT", {}):
nag.append((t, src["PROJECT"][k]))
secs = [("START", start), ("PRINT", prt), ("EQUIPMENT", eq), ("PROJECT", prj), ("NAG_HAL", nag)]
@@ -144,11 +193,19 @@ def ini_from_dos(mem: bytes, conld: str, contd: str) -> tuple[bytes, list[str]]:
start = [kv for kv in start if kv[0] not in ("SUBNM", "QCDNM", "XCDNM", "JUKNM")]
start += [("SUBNM", ""), ("QCDNM", "0"), ("XCDNM", "0"), ("JUKNM", "0")]
prt = [(k, str(v[k])) for k in DOS_PRINT if k in v]
prt += [("ORDNM", " "), ("FONT", "굴림체"), ("F_COL0", "clBlack"), ("F_COL1", "clRed"), ("F_COL2", "clBlack")]
prt += [
("ORDNM", " "),
("FONT", "굴림체"),
("F_COL0", "clBlack"),
("F_COL1", "clRed"),
("F_COL2", "clBlack"),
]
eq = [(k, str(v[k])) for k in DOS_EQUIP if k in v]
eq += [(k, x) for k, x in (("CONLD", conld), ("CONTD", contd)) if x]
note = ["DOS [START] 키 이름 표(0x588294)는 실행 중 채워짐 — MEM 변수 이름 그대로 씀(조건부)"]
return write_ini([("START", start), ("PRINT", prt), ("EQUIPMENT", eq), ("PROJECT", [("PMODE", "1")])]), note
return write_ini(
[("START", start), ("PRINT", prt), ("EQUIPMENT", eq), ("PROJECT", [("PMODE", "1")])]
), note
def b_list(rows: list[dict]) -> str:
@@ -162,4 +219,8 @@ def b_list(rows: list[dict]) -> str:
def swap_codes(text: str, mapping: dict[str, str]) -> str:
return re.sub("|".join(map(re.escape, mapping)), lambda m: mapping[m.group(0)], text) if mapping else text
return (
re.sub("|".join(map(re.escape, mapping)), lambda m: mapping[m.group(0)], text)
if mapping
else text
)
+5 -1
View File
@@ -163,7 +163,11 @@ def comp_row(bd: str, r: tuple, cols: dict, meta: dict) -> dict:
row["BIMOK"] = meta.get("BMK", "")
row["PRPT"] = _int(meta.get("IPR"))
if k == "D":
row |= {"SPRPT": _int(meta.get("SPR")), "SBMOK": meta.get("SBM", ""), "TPRPT": _int(meta.get("TPR"))}
row |= {
"SPRPT": _int(meta.get("SPR")),
"SBMOK": meta.get("SBM", ""),
"TPRPT": _int(meta.get("TPR")),
}
if ratio:
row |= {"UNIT1": meta.get("UNI", ""), "EQCODE": meta.get("EQC", "")}
row |= {"PRIN": _int(meta.get("PRI")), "PROUT": _int(meta.get("PRO"))}
+19 -4
View File
@@ -22,7 +22,12 @@ from dbf_rw import DbfTable, find_rows
KIND = {".JPG": "TJPEGIMAGE", ".JPEG": "TJPEGIMAGE", ".BMP": "TBITMAP", ".ICO": "TICON"}
KIND |= {".EMF": "TMETAFILE", ".WMF": "TMETAFILE"}
MIME = {"TJPEGIMAGE": "image/jpeg", "TBITMAP": "image/bmp", "TICON": "image/x-icon", "TMETAFILE": ""}
MIME = {
"TJPEGIMAGE": "image/jpeg",
"TBITMAP": "image/bmp",
"TICON": "image/x-icon",
"TMETAFILE": "",
}
NEW_NAME = "새로운 그림코드"
@@ -78,7 +83,9 @@ def list_images(files: dict) -> list[dict]:
if t.deleted(i) or not code.startswith("I"):
continue
data = memo.read(t.raw(i, "IFORM"))
out.append({"CODE": code, "NAME": t.get(i, "NAME"), "SIZE": t.get(i, "SIZE"), "bytes": len(data)})
out.append(
{"CODE": code, "NAME": t.get(i, "NAME"), "SIZE": t.get(i, "SIZE"), "bytes": len(data)}
)
return out
@@ -94,7 +101,9 @@ def get_image(files: dict, code: str) -> tuple[bytes, str, str]:
return data, kind, MIME.get(kind, "")
def put_image(files: dict, code: str, data: bytes, filename: str, to_jpeg: bool = False) -> tuple[dict, dict]:
def put_image(
files: dict, code: str, data: bytes, filename: str, to_jpeg: bool = False
) -> tuple[dict, dict]:
"""그림 넣기·그림저장 — (바뀐 files 두 개, 보고) · 없는 I 코드는 새로 등록(이름 「새로운 그림코드」)."""
code = code.strip().upper()
if not code.startswith("I") or len(code) > 6:
@@ -115,4 +124,10 @@ def put_image(files: dict, code: str, data: bytes, filename: str, to_jpeg: bool
ptr = t.raw(i, "IFORM")
t.set_raw(i, "IFORM", memo.write(ptr if ptr.strip(b" \x00") else BLANK_PTR, data))
out = {"COSTN.DBF": t.to_bytes(), "COSTN.SMT": memo.to_bytes()}
return out, {"code": code, "new": new, "kind": kind, "bytes": len(data), "name": t.get(i, "NAME")}
return out, {
"code": code,
"new": new,
"kind": kind,
"bytes": len(data),
"name": t.get(i, "NAME"),
}
+19 -5
View File
@@ -59,7 +59,12 @@ def code_record(t: DbfTable, i: int, s: int) -> dict:
"""FUN_00431758 꼴 코드 기록 — 계열 s 의 노무·재료·경비."""
code = _s(t, i, "CODE")
k = code[:1]
rec = {"CODE": code, "NAME": _s(t, i, "NAME"), "SIZE": _s(t, i, "SIZE"), "UNIT": _s(t, i, "UNIT")}
rec = {
"CODE": code,
"NAME": _s(t, i, "NAME"),
"SIZE": _s(t, i, "SIZE"),
"UNIT": _s(t, i, "UNIT"),
}
if k == "X":
rec["UNIT"] = "시간"
rec |= {"EQCODE": _s(t, i, "EQCODE"), "BQCODE": _s(t, i, "BQCODE"), "UC": _l(t, i, "UC")}
@@ -89,13 +94,17 @@ def code_line(rec: dict, gun_ok: bool, gun: str) -> tuple[str, bytes] | None:
head = [rec["CODE"], rec["NAME"], rec["SIZE"], unit]
last = Raw(gun if (gun_ok and k in "MS") else " ")
if k == "L":
return name, build_line(head + [rec["L"], rec["EQCODE"], ""], [rec["BQCODE"], rec["UC"], *rec["AMT"], last])
return name, build_line(
head + [rec["L"], rec["EQCODE"], ""], [rec["BQCODE"], rec["UC"], *rec["AMT"], last]
)
if k == "M":
pairs = [x for a, p in zip(rec["AMT"], rec["PG"]) for x in (a, p)]
ext = [rec["BQCODE"], rec["UC"], *rec["AMT"], *rec["PG"], rec["PG_J"], rec["PG_S"], last]
return name, build_line(head + [rec["M"], rec["EQCODE"], *pairs, "", "", ""], ext)
if k == "S":
return name, build_line(head + ["0", "0", rec["E"], rec["EQCODE"], ""], [rec["BQCODE"], rec["UC"], last])
return name, build_line(
head + ["0", "0", rec["E"], rec["EQCODE"], ""], [rec["BQCODE"], rec["UC"], last]
)
prices = [rec["M"], rec["L"], rec["E"], rec["EQCODE"]]
if k == "W":
return name, build_line(head + prices + [""], [rec["BQCODE"], rec["UC"]])
@@ -125,7 +134,9 @@ def export_bundle(path: str, series: int | None = None, today: datetime.date | N
s = series or SERIES_BY_PCLASS.get(pclass)
if not s:
raise ValueError(f"PCLASS {pclass} 의 계열 미확인 — series(1~4) 지정 필요")
gun_ok = all(f in t.fields for f in ("GUN", "BAMT", "CAMT", "DAMT", "EAMT", "FAMT", "KAMT", "ZAMT"))
gun_ok = all(
f in t.fields for f in ("GUN", "BAMT", "CAMT", "DAMT", "EAMT", "FAMT", "KAMT", "ZAMT")
)
files: dict[str, bytearray] = {}
warnings: list[str] = []
rows = [i for i in range(len(t)) if not t.deleted(i)]
@@ -146,7 +157,10 @@ def export_bundle(path: str, series: int | None = None, today: datetime.date | N
head = build_line(["01", p.get(0, "PNAME"), 1, ""], ["", False, "", "", "", Raw("0")])
files["GongJong.Txt"] = bytearray(head + b"\r\n")
day = (today or datetime.date.today()).strftime("%Y%m%d")
cost = [(k, p.get(0, f"{f}{s}")) for k, f in (("LCOST", "LCOST"), ("MCOST", "MCOST"), ("ECOST", "SCOST"))]
cost = [
(k, p.get(0, f"{f}{s}"))
for k, f in (("LCOST", "LCOST"), ("MCOST", "MCOST"), ("ECOST", "SCOST"))
]
cost.append(("TCOST", p.get(0, f"TCOST{s}")))
ini = [("BASIC", [("MAKER", "STM"), ("CDATE", day), ("JDL VERSION", "3.3")]), ("COST", cost)]
ini.append(("CPART", CPART_CONST))
+20 -2
View File
@@ -52,12 +52,30 @@ COLUMNS: dict[str, list[str | None]] = {
"JUnit.Txt": _PRICE + ["F_TFNO", "F_BIGO"],
"Danga.Txt": _PRICE + ["F_TFNO", "F_BIGO"],
# 세부 3종(Ghidra 0x4f7890 · 0x4fa7fc · 0x4fdd10) — F_CODE1 = 앞 열 묶음 + 1열(조건부)
"MainPart.Txt": ["F_CODE", "F_CODE1", "F_DES", "F_SIZE", "F_UNIT", "F_QQTY", "F_MPRICE", "F_LPRICE"]
"MainPart.Txt": [
"F_CODE",
"F_CODE1",
"F_DES",
"F_SIZE",
"F_UNIT",
"F_QQTY",
"F_MPRICE",
"F_LPRICE",
]
+ ["F_EPRICE", None, "F_SPROPER", "F_LOADBM", "F_SAVEBM", "F_SRATE", "F_KWAN", "F_SCOST"]
+ ["F_SGUBUN", "F_SCODE", "F_SANQTY"]
+ _LINK
+ ["F_LRATE", "F_SAN"],
"UnitPart.Txt": ["F_CODE", "F_CODE1", "F_DES", "F_SIZE", "F_UNIT", "F_QQTY", "F_MPRICE", "F_LPRICE"]
"UnitPart.Txt": [
"F_CODE",
"F_CODE1",
"F_DES",
"F_SIZE",
"F_UNIT",
"F_QQTY",
"F_MPRICE",
"F_LPRICE",
]
+ ["F_EPRICE", None, "F_SPROPER", "F_LOADBM", "F_SAVEBM", "F_SRATE", "F_KWAN", "F_SANQTY"]
+ _LINK
+ ["F_LRATE", "F_SAN"],
+2 -1
View File
@@ -76,7 +76,8 @@
async jdlExport(ctx) {
const body = { source_path: curPath(ctx) };
const r = await req("/api/jdl/export", body);
if (!confirm(`[조달청포맷(TEXT,JDL) 생성]\n${summary(r)}\n\n묶음 파일을 zip 으로 받을까요?`)) return;
if (!confirm(`[조달청포맷(TEXT,JDL) 생성]\n${summary(r)}\n\n묶음 파일을 zip 으로 받을까요?`))
return;
const name = (ctx.state.projectMeta.pname || "공사").slice(0, 28);
download(await req("/api/jdl/export.zip", body, true), `${name}_JDL_TEXT.zip`);
},