Merge remote-tracking branch 'origin/dev' into main_laptop_1

This commit is contained in:
2026-11-14 17:04:01 +09:00
41 changed files with 25414 additions and 141 deletions
@@ -121,3 +121,5 @@ REA 6.7.0 / Ghidra 12.1.4 / 기존 JDK 21.0.7. Ghidra는 LOCALAPPDATA/STMATE-REA
- 2026-11-14 35단계: [보고서 양식·수량산출서 파일 정적 분석](35_보고서양식_수량산출서_작업자료_20261114/35_보고서양식_수량산출서_정적분석.md) — ST_Prt 인쇄 분기표(20000+서식 → Prn_* · 0609 = Prn_Won_A · 0608 = Prn_Wonga · 0672 = Prn_Jab) · 인쇄 양식 DFM 칸 차례(0303·0605·0607·0609·0615·0675~0679·0695) · T_PER = 금액÷총액×100 · 수량산출서 IFORM = VTS·XLS 파일 바이트(16MB · .VTS 내보내기 · ReadDefName XCODE·QTYn) · 그림 = I 코드 IFORM · JDCODE BSC 필드 · 원가 줄 엑셀 수식 틀. 바이트 읽기만, 원본 실행 없음.
- 2026-11-14 39단계: [기성·준공·변경율·굴착변경 서식 잔여 정적 분석](39_단계서식_잔여_작업자료_20261114/39_단계서식_잔여_정적분석.md) — 0633~0638·0645~0647 = ST_P_ConEst K1·K2·K3·C1·C3 · 갈래 TMP_R+8(0634=4·0636=3·0637=4·0646=1·0647=2) · 0635 비율 = 수량 기준 · 0638 기성% = QTY2÷QTY1 · 기성검사 기성고 = T_AMT3·4·2÷T_AMT1 · 기성금액 = T_AMT2 · 준공 계약·준공금액 = 인쇄 칸 배열 첫 값 칸(기성 4) · 0645 증감율 = (뒤−앞)÷앞 · 0661~0663 시비[1,3]·구비[2,4]. 바이트 읽기만, 원본 실행 없음.
- 2026-11-14 36단계: [계산 엔진 잔여 규칙](36_계산엔진_잔여_작업자료_20261114/36_계산엔진_잔여규칙.md) — A 코드 = COSTA · S_JDA 참 = 저장 단가 · ACTTYP·ACTOPT = PRJLST(0x45c938) · EXRNM 참 = S 줄 MROUNDUD(×율, ECD, 0) · 거짓 = 상위 B·천원 줄 수량 칸 = 율 → 두 경로 ECD 버림만큼 다름 · 수량 계산기 = MROUNDUD 선택 1 · 적용기준 Values 2·0·1(행자부 = 1) · 행자부 RATE_M 줄 b+11/b+15·23·24. Ghidra 읽기만, 원본 실행 없음.
- 2026-11-14 38단계: [보고서 잔여 서식 정적 분석](38_보고서_잔여_작업자료_20261114/38_보고서_잔여_정적분석.md) — 엑셀판 = ST_P_XLS · 설계내역서 쪽 채움(LNP_CNT · 0x520e34 · 원본 3건 행 번호 일치) · 인쇄 영역 $A:$열·탭 색 · 0605 금회 = BOQ QTY2·T_AMT2 · 0615 견적·기준 = xAMT1·xAMT2 두 행 · 0695 회사분 0·도급분 DTP 참조 · 0651 시기금·구기금 = 고른 1·2 차수 T_AMT · 토개공·수자원 글 없음. 바이트 읽기만, 원본 실행 없음.
- 2026-11-14 37단계: [파일 입출력 잔여 정적 분석](37_파일입출력_잔여_작업자료_20261114/37_파일입출력_잔여_정적분석.md) — JDL TEXT = 탭 구분(검사기 고정폭 표는 죽은 고리 · 34 §17.9 바로잡음) · 단가 목록 7종·Main·Global.Ini 줄 규칙 · 세부 3종 열 이름 · 구버전 판 가리기·필드 대응(B→X 조건 = 단위 X) · 엑셀 역등록 구성 줄 PRPT·PRIN 뜻 · wM_JajeXLS = 재료비 수량집계표 내보내기만 · 그림 = COSTN I 코드 IFORM · SIZE = 그림 클래스 이름
@@ -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
@@ -0,0 +1,87 @@
# 38 보고서 잔여 서식 정적 분석 — 작업자료
- 분석일: 2026-11-14
- 방법: 설치본 바이트 읽기만(실행·수정·라이선스 우회 없음) · REA MCP(rea-agents 6.7.0 + Ghidra 12.1.4) 의사코드 · capstone 32비트 역어셈블(32단계 `tools/adis.py`·`pe.py`) · 원본 STMATE 출력 엑셀 5건 셀·인쇄 설정 대조
- 근거 파일: `evidence/`(Ghidra 의사코드 글 그대로)
- 앞 단계: [35 보고서양식·수량산출서](../35_보고서양식_수량산출서_작업자료_20261114/35_보고서양식_수량산출서_정적분석.md) §1 인쇄 분기표
| 모듈 | sha256 |
|---|---|
| ST_CPM/ST_P_XLS.CPM | 1d3f7ed8702ee9e4ea2309126028f3600497617c576c1b91659b0c8c60083da0 |
| ST_CPM/ST_Prt.CPM | 0698a6343ba04a5b379f297da60e68a9fc3f18d5ac0ad262570f70ca98dd3c19 |
| ST_CPM/ST_P_Excav.CPM | 62ea015c8fcb05c351d394a8bdb3214ea516d099fb986c25a7503358160fb0d0 |
확신 표기: **높음** = 명령어 흐름·상수·칸 이름 확인 + 원본 엑셀 일치 · **중간** = 흐름 확인, 업무 의미 일부 미확인 · **낮음** = 이름·배치만.
## 0. 엑셀판 함수 자리 — ST_P_XLS 내보내기 표
- 엑셀판(`*_EXL`)은 모두 ST_P_XLS.CPM 안(35 §1 표의 「모듈」 칸은 인쇄판 자리) — Prn_Nae_EXL 0x51e848 · Prn_Nae_P_EXL 0x51e8a4 · Prn_Nae_B_EXL 0x528e00 · Prn_Bqm_EXL 0x53f230 · Prn_Nae_EST_EXL 0x5611dc · Prn_Nae_Ex1_CT_EXL 0x59e818 · Prn_Boq_Not 0x55f168 · Prn_Nae_ColM 0x559a48(→ 0x558c64) · Prn_Nae_PLNM 0x55c8b0(→ 0x55bed8) · Prn_AList_EXL 0x4c5f7c · Prn_iLWi_S_EXL 0x5b1270
- 설계내역서·분할·견적대비 엑셀판은 임시 표가 아니라 작업 폴더(설정 +0x128) + `BOQ` + `.DBF` 를 SORTCODE 차례로 직접 엶(0x523620 · 0x529b9c · 0x56216c)
## 1. F5-28 쪽 채움(설계내역서) — 높음 · 원본 엑셀 3건 행 번호 일치
- 쪽 줄 수 N: Start8x.Ini `[PRINT] LNP_CNT`(ST_Prt 0x44ddd5 · 기본 0x19 = 25 · 설정 바이트 +0x529f) → ST_P_XLS 0x4b61b8 `N = TRUNC(LNP ÷ 줄 높이) × 줄 높이`(줄 높이 = 설정 +0x1788 · 설계내역서 1) → 전역 0x624774
- 채움 프로시저 0x520e34(Prn_Nae_EXL 안): 다음 쓸 행 r · 머리 행 h(0x624744) — `(r − h) mod N ≠ 1` 이면 `(r − h − 1) div N` 이 바뀔 때까지 빈 줄(테두리만) · 부를 때마다 표시 0x687b69 = 1
- 부르는 자리: BDCODE1 `:`(쪽 넘김) 줄(0x521b7f) · 끝(0x52325c — 설정 +0x175d 또는 0x687b69 이면 한 번 · 꼬리 줄 0x51e8e8 뒤 0x5232ac 무조건 한 번)
- 총합계 SUMIF 줄은 숨은 줄(높이 없음)로 마지막 내용 줄 바로 뒤 — 쪽 줄 수에 들지 않음
- 원본 대조: 봉화(LNP 20 · `:` 3) 행 145 · 빈 줄 31~44 · 104 · 136~145 / 대흥(20) 265 · 74~84 · 151~164 · 235~244 · 255~265 / 영월(25 · `:` 없음) 180 · 내용 175 = 25×7 → 채움 0 / 울진 착공(20) 끝 77~85 — 모두 같은 규칙
- `:` 가 쪽 끝에 딱 맞으면 빈 줄 0(봉화 셋째 `:` 125행)
- 0x612168(N) 읽는 엑셀판: Prn_Nae_EXL · Prn_Nae_P_EXL(0x525cd0) · Prn_Bqm_EXL(0x53ef70) · 0x5446a2 · Prn_Nae_K1·K2·K3_EXL — 굴착 Ex1(0x59e818~)·분할(0x528e00)은 안 읽음
## 2. F5-32 인쇄 꼴 — 원본 엑셀 5건 실측 · 높음(영역·제목·숨은 열·탭) / 미확인(배율·여백·바닥글)
| 항목 | 관찰 |
|---|---|
| 인쇄 영역 | `시트!$A:$열` 열 통째(행 끝 없음) · 끝 열 = 숨은 이름표 열 앞 · 목차 `$A:$C` · 안내·INITIAL 없음 |
| 인쇄 제목 | 머리 행까지(`$1:$3` 또는 `$1:$4`) · 목차·안내·환율·INITIAL 없음 |
| 숨은 열 | 2행 시트 이름표 열 하나 |
| 탭 색 | 목차 FF0000FF · 안내 FFFF0000 · INITIAL FF0000FF · 그 밖 없음 |
| 방향 | 안내·INITIAL 세로(5건) · 그 밖 4건 가로 · 영월만 목록·집계류 세로 — 방향 결정 근거 미확인 |
| 배율 | 서식마다 고정(설계 69 · 총괄 91 · 목록 98 · 일위대가표·중기사용료 73 · 자재대비 61 · Col_X 집계 87) — 계산식 미확인(0x4b61b8 → 0x4b5bd0) |
| 바닥글 | 0x4b3f30: RPOS_PAGE(+0x529a)·RPOS_COP(+0x529b) 1·2·3 → 바닥글 자리 셋 · 글 = `&"<글꼴>,"&9 ` + 회사명(+0x628) · 봉화(SUBNM 남부지방산림청 · RPOS_COP 3) = `&R` 에 회사명 — 영월·울진(RPOS_PAGE 2)엔 바닥글 없음 → 조건 미확인 |
## 3. F5-19 분할내역서(0605) 엑셀판 — 높음(칸 출처)
- Prn_Nae_B_EXL 0x528e00 · BOQ.DBF 직접 · 칸: 수량 전체 = `QTY1`(0x529c8c) · 금회 = `QTY2`(0x529c9c) · 단가 = `TAMT1` · 금액 전체 = `T_AMT1` · 금회 = `T_AMT2` · 비고 = 코드(CODEA·SORTCODE 0x4a9280)
- 1·2 칸 고정(인쇄 차수와 무관) — 금회 = 내역 2칸(실행·변경 차수 칸) 값 · 비율 입력 아님
- 빈 금액 줄: 설정 +0x1763 이면 0 대신 서식 `#,###` 글
## 4. F5-23 견적단가대비표(0615) 엑셀판 — 높음(칸 출처) · 중간(비고 갈래)
- Prn_Nae_EST_EXL 0x5611dc · BOQ.DBF 직접 · 줄마다 두 행(0x561e…: local_c += 2)
- 1행: 1 공종(ITNUM) · 2 명칭 · 3 규격 · 4 단위 · 비목 x ∈ `MLSTAN` 앞 넷(0x56225c) 마다 열 = Pos(x, 설정 글 +0x328)×2+3 견적단가 = x+`AMT1`(MAMT1·LAMT1·SAMT1·TAMT1 = 1칸 단가) · +4 기준단가 = x+`AMT2`(2칸 단가)
- 2행: 견적 칸에 `AMT1 ÷ AMT2`(AMT2 = 0 이면 0 · 서식 `#,0.00 %;;#`)
- 13열 비고(두 행 병합): 설정 +0x1749·+0x174a 갈래 — BQCODE · EQCODE · 호표 글(0x4a9cc0)
- 대상 줄: `:` 와 (설정 +0x1759 이면) C·E 줄만 건너뜀 — W 코드 한정 아님(35 §2.6 후보 정정)
## 5. F5-26 간이공사비 산출명세서(0695) 엑셀판 — 높음(배치·회사분) · 중간(DTP 의미)
- Prn_Boq_Not 0x55f168(엑셀판 = 같은 이름) · 머리 0x55dfe0: `구 분` · 재료비 · 노무비 · 경비 · `일 반\n관리비` · 이윤 · 소계 · 부가세 · 합계 · 작성자
- 2열 회사분(0x5606f0) · 도급분 · 계 · 3~10열 값 · 11열 = 설정 +0x528 글(두 행) · 계 줄 11열 `(인)`
- 회사분 줄 = 3~10열 모두 0 · 계 줄 = 열마다 `=<열>r+<열>r+1` 수식
- 도급분: 3 = DTP 202 · 4 = DTP 200+201 · 5 = DTP 300 + 301~399 · 6 = 401 · 7 = 402 · 8 = `=SUM(3열:7열)` · 9 = 502 · 10 = 8열+9열(0x55ebd0 · 0x55e91c — 원가 줄 DTP 열쇠로 셀 참조 또는 값)
- 아래: ` 예정가격산출`(3~10열 0) · ` 예정가격(결정권자)`(4열 0 · 8열 `원` · 10열 설정 +0x428 · 12열 `(인)`) · `공 사 비 예 산 서`(1열)·`공 사 비 정 산 서`(9열) · 칸 머리 1 자산단위번호 · 3 품명및규격 · 5 단위 · 6~8 수량·단가·금액 · 9~11 수량·단가·금액 · 12 증감(= 11열 − 8열) · 27행까지 · (12,3) `" 설 계 서 붙 임 "`
- 미확인: DTP 202 의 업무 이름(재료비 줄로 보임) · 설정 +0x528·+0x428 글 이름 · 예정가격산출 % 출처(엑셀판은 0)
## 6. F5-24 구.시도(0651·0655) 엑셀판 — 중간
- Prn_Nae_Ex1_CT_EXL 0x59e818 · 임시 표 PRT.DBF · 4열 = `T_AMT1` · 5열 = `T_AMT2` · 6열 = `=SUM(D r:E r)` · T 줄은 ITNUM·NAME1·SIZE1 · 그 밖 AD_NO + 이름 칸 · 3열 = `BIGO_`+차수 접미(설정 +0x1789)
- PRT.DBF 준비(ST_P_Excav 0x47d564 · `evidence/ST_P_Excav_PRT_prep_0x47d564.c`): 고른 차수마다 칸 `NAME_`·`T_AMT`·`M_AMT`… + 접미(0x49e91c 표 · 차수 = 설정 +0x1789~ · 개수 = +0x1788) 를 만들고 BOQ 줄의 T_AMT·M_AMT·L_AMT·S_AMT 를 옮김(0x49300c) → 시기금·구기금 = 고른 첫째·둘째 차수 칸 금액(비율 나눔 아님) · 영덕 변경 BOQ 저장 T_AMT1·T_AMT2 와 재현 앱 공종 줄 19개 일치
- 0655(Ex1_T 품목 줄) 엑셀판 칸 배치 미확인
- 굴착 Ex1 엑셀판은 쪽 채움(0x612168) 안 읽음
## 7. F5-09 일위대가표 수공양식(0303) 엑셀판 — 중간
- Prn_iLWi_S_EXL 0x5b1270 · PRT.DBF(CODE) · 구성 줄: 1열 명칭(D 코드 일부는 `손료계산`) · 2열 규격(% 줄 ` %`) · 비목 M·L·S 열 = Pos(x, 설정 글)×2+3(단가)·+4(금액) · 11열 비고 · 호표 끝 `합 계` 줄(0x5b2cd8 · 금액 칸)
- 미확인: 비목 자리 설정 글(BMKNM 에서 T 를 뺀 글로 보임) · 수량·단위 열 번호(0x688f1c·0x688f18)
## 8. 그 밖
| ID | 관찰 |
|---|---|
| F5-04 | Prn_AList_EXL 0x4c5f7c = PRT.DBF(CODE) + 산근 꼴 수식 조각(`IF(COUNTIF(` · `ROUND(ROUNDDOWN(` · `<ROUND(ABS(`) · 「주의) 현재행 아래 내용을 수정 또는 삭제하지 마십시요.」 — A 코드 대상 조건(PRT.DBF 준비) 미확인 |
| F5-20 | Prn_Bqm_EXL 0x53f230 = 작업 폴더 `BQM.DBF`(STC 파일 목록에 없음 → 인쇄 때 만드는 임시 표) · 칸 TAMT1·T_AMT1·QTY1·CMT·BIGO·DOLLOR · 쪽 채움 있음 — BQM 준비 함수 미확인 |
| F5-25 | Prn_Nae_ColM·ColL·ColX = 0x558c64(코드 1·2·3) 감쌈 — DES1·DES2 채움 미확인 |
| F5-30 | 문자열 KAN_RATE 는 ST_KanJub.CPM 에만 · ST_Prt 분기·ST_P_XLS 엑셀판 없음 → 제잡비 요율표 = 제잡비 화면 인쇄 전용 |
| F5-31 | 원본 총괄설계내역서 원가 줄 = D 수식(`=ROUNDDOWN(E11*M12/100,0)` 꼴) · E 설명 수식 · H 메타(`DTP|201`…) · I~P 보정·요율·추가액 칸 / 공사원가계산서 D = 총괄 행 참조 · E = `=D/D29*100` · H 바로가기 — 재현 앱 미구현(칸 구성 큼) |
| F5-33 | 「토개공」「수자원」「토지주택」「토지공사」 글 — System·ST_CPM 모든 CPM·EXE 에 없음 |
@@ -0,0 +1,436 @@
## pc_bn_head.json ev_c8be9fc807fac7da36834a89ec30c240e3ccf97ebd5879da980dcc0c0a3f6d8c
void FUN_0055dfe0(void)
{
int iVar1;
undefined1 *puVar2;
int *piVar3;
int iVar4;
int *piVar5;
int *unaff_EDI;
undefined4 *in_FS_OFFSET;
float10 in_ST0;
int in_stack_00000004;
undefined4 local_154;
undefined4 local_150;
undefined4 local_14c;
undefined1 local_148 [16];
int *local_138;
int *local_134;
int *local_130;
undefined1 local_12c [16];
int *local_11c;
int *local_118;
int *local_114;
undefined1 local_110 [16];
int *local_100;
int *local_fc;
int *local_f8;
undefined1 local_f4 [16];
int *local_e4;
int *local_e0;
int *local_dc;
undefined1 local_d8 [16];
int *local_c8;
int *local_c4;
int *local_c0;
undefined1 *local_bc [4];
undefined1 *local_ac [4];
undefined1 *local_9c [4];
undefined1 *local_8c [4];
undefined1 *local_7c [4];
undefined1 *local_6c;
undefined4 uStack_68;
undefined4 uStack_64;
undefined4 uStack_60;
undefined1 *local_5c;
undefined4 uStack_58;
undefined4 uStack_54;
int *piStack_50;
undefined1 *local_4c;
undefined *puStack_48;
undefined4 uStack_44;
undefined1 **ppuStack_40;
undefined1 *local_3c;
undefined4 uStack_38;
undefined4 uStack_34;
undefined4 uStack_30;
undefined1 *local_2c;
undefined4 uStack_28;
undefined4 uStack_24;
undefined1 *puStack_20;
int *local_1c;
local_1c = (int *)&stack0xfffffffc;
iVar4 = 0x2a;
do {
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
piVar5 = (int *)(in_stack_00000004 + -4);
puStack_20 = &LAB_0055e856;
uStack_24 = *in_FS_OFFSET;
*in_FS_OFFSET = &uStack_24;
*(undefined4 *)PTR_DAT_00612088 = 0xc;
*PTR_DAT_006120d4 = 0;
uStack_28 = 0x55e024;
FUN_004b3140(0,0,1);
uStack_28 = *(undefined4 *)PTR_DAT_00612088;
local_2c = (undefined1 *)0x14;
uStack_30 = 0xffffeff4;
uStack_34 = 0xffffeff4;
uStack_38 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
local_3c = (undefined1 *)0x0;
ppuStack_40 = (undefined1 **)0x55e05b;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString
(&stack0xffffffec,*(undefined4 *)(*(int *)PTR_DAT_006120a4 + 0xc));
ppuStack_40 = (undefined1 **)&stack0xffffffec;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e07c;
FUN_004b1bb8(1,1,1);
piStack_50 = (int *)0x55e08b;
(**(code **)(**(int **)PTR_DAT_006120b4 + 0x44))(*(int **)PTR_DAT_006120b4,&stack0xffffffe8);
piStack_50 = (int *)0x55e095;
(**(code **)(*unaff_EDI + 0x50))(unaff_EDI,1);
piStack_50 = (int *)0x55e0a4;
(**(code **)(**(int **)PTR_DAT_006120b4 + 0x44))(*(int **)PTR_DAT_006120b4,&local_1c);
piStack_50 = (int *)0x55e0b1;
(**(code **)(*local_1c + 100))(local_1c,2);
*PTR_DAT_006120d4 = 3;
iVar4 = 1;
do {
if (iVar4 == 1) {
*piVar5 = 1;
}
else {
*piVar5 = iVar4 + 1;
}
switch(iVar4) {
case 1:
piStack_50 = (int *)(*piVar5 + 1);
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e137;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_2c,&DAT_0055e87c);
ppuStack_40 = &local_2c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e15d;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 2:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e18e;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_3c,&DAT_0055e88c);
ppuStack_40 = &local_3c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e1b4;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 3:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e1e5;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_4c,&DAT_0055e89c);
ppuStack_40 = &local_4c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e20b;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 4:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e23c;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_5c,&DAT_0055e8ac);
ppuStack_40 = &local_5c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e262;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 5:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e293;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_6c,&DAT_0055e8bc);
ppuStack_40 = &local_6c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e2b9;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 6:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e2ea;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_7c,&DAT_0055e8d4);
ppuStack_40 = local_7c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e310;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 7:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e344;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_8c,&DAT_0055e8e4);
ppuStack_40 = local_8c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e36d;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 8:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e3a1;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_9c,&DAT_0055e8f4);
ppuStack_40 = local_9c;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e3ca;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 9:
piStack_50 = (int *)*piVar5;
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e3fe;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_ac,&DAT_0055e904);
ppuStack_40 = local_ac;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e427;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
break;
case 10:
piStack_50 = (int *)(*piVar5 + 1);
uStack_54 = 0xc;
uStack_58 = 0xffffeff4;
local_5c = (undefined1 *)0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
uStack_68 = 0x55e459;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_bc,&DAT_0055e914);
ppuStack_40 = local_bc;
uStack_44 = 0;
puStack_48 = &DAT_0055e870;
local_4c = (undefined1 *)0x0;
piStack_50 = (int *)0x55e482;
FUN_004b1bb8((int)(char)*PTR_DAT_006120d4,*piVar5,(int)(char)*PTR_DAT_006120d4);
}
if (iVar4 == 1) {
piStack_50 = (int *)0x55e4a7;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_c8);
piStack_50 = (int *)0x55e4b8;
(**(code **)(*local_c8 + 0x2c))(local_c8,&local_c4);
piStack_50 = (int *)0x55e4ce;
(**(code **)(*local_c4 + 0x168))(local_c4,*piVar5,&local_c0);
piStack_50 = local_c0;
uStack_54 = 0x40140000;
uStack_58 = 0;
local_5c = (undefined1 *)0x55e4e1;
FUN_004b5b78();
uStack_54 = 0x55e4ec;
_System__VarFromReal_qqrv(local_d8);
piVar3 = piStack_50;
iVar1 = *piStack_50;
piStack_50 = (int *)0x55e4f8;
(**(code **)(iVar1 + 0x50))(piVar3,local_d8);
piStack_50 = (int *)0x55e50a;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_e4);
piStack_50 = (int *)0x55e51b;
(**(code **)(*local_e4 + 0x2c))(local_e4,&local_e0);
piStack_50 = (int *)0x55e532;
(**(code **)(*local_e0 + 0x168))(local_e0,*piVar5 + 1,&local_dc);
piStack_50 = local_dc;
uStack_54 = 0x40260000;
uStack_58 = 0;
local_5c = (undefined1 *)0x55e545;
FUN_004b5b78();
uStack_54 = 0x55e550;
_System__VarFromReal_qqrv(local_f4);
piVar3 = piStack_50;
iVar1 = *piStack_50;
piStack_50 = (int *)0x55e55c;
(**(code **)(iVar1 + 0x50))(piVar3,local_f4);
}
else if (iVar4 == 10) {
piStack_50 = (int *)0x55e573;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_100);
piStack_50 = (int *)0x55e584;
(**(code **)(*local_100 + 0x2c))(local_100,&local_fc);
piStack_50 = (int *)0x55e59a;
(**(code **)(*local_fc + 0x168))(local_fc,*piVar5,&local_f8);
piStack_50 = local_f8;
uStack_54 = 0x402a0000;
uStack_58 = 0;
local_5c = (undefined1 *)0x55e5ad;
FUN_004b5b78();
uStack_54 = 0x55e5b8;
_System__VarFromReal_qqrv(local_110);
piVar3 = piStack_50;
iVar1 = *piStack_50;
piStack_50 = (int *)0x55e5c4;
(**(code **)(iVar1 + 0x50))(piVar3,local_110);
piStack_50 = (int *)0x55e5d6;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_11c);
piStack_50 = (int *)0x55e5e7;
(**(code **)(*local_11c + 0x2c))(local_11c,&local_118);
piStack_50 = (int *)0x55e5fe;
(**(code **)(*local_118 + 0x168))(local_118,*piVar5 + 1,&local_114);
piStack_50 = local_114;
uStack_54 = 0x402a0000;
uStack_58 = 0;
local_5c = (undefined1 *)0x55e611;
FUN_004b5b78();
uStack_54 = 0x55e61c;
_System__VarFromReal_qqrv(local_12c);
piVar3 = piStack_50;
iVar1 = *piStack_50;
piStack_50 = (int *)0x55e628;
(**(code **)(iVar1 + 0x50))(piVar3,local_12c);
}
else {
piStack_50 = (int *)0x55e63c;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_138);
piStack_50 = (int *)0x55e64d;
(**(code **)(*local_138 + 0x2c))(local_138,&local_134);
piStack_50 = (int *)0x55e663;
(**(code **)(*local_134 + 0x168))(local_134,*piVar5,&local_130);
piStack_50 = local_130;
uStack_54 = 0x402a0000;
uStack_58 = 0;
local_5c = (undefined1 *)0x55e676;
FUN_004b5b78();
uStack_54 = 0x55e681;
_System__VarFromReal_qqrv(local_148);
piVar3 = piStack_50;
iVar1 = *piStack_50;
piStack_50 = (int *)0x55e68d;
(**(code **)(iVar1 + 0x50))(piVar3,local_148);
}
iVar4 = iVar4 + 1;
} while (iVar4 != 0xb);
piStack_50 = (int *)0x1e;
uStack_54 = 0;
uStack_58 = 0x55e6bc;
FUN_004b659c(0x16,(int)*(char *)(*(int *)PTR_DAT_006120a4 + 0x1788),(int)(char)*PTR_DAT_006120d4);
*(double *)PTR_DAT_006120cc = (double)in_ST0;
uStack_58 = 0;
local_5c = (undefined1 *)0x1;
local_150 = *(undefined4 *)PTR_DAT_006120cc;
local_14c = *(undefined4 *)(PTR_DAT_006120cc + 4);
local_154 = 0;
uStack_60 = 0x55e6f9;
FUN_004ba8b0(&local_154,0,&local_150);
uStack_60 = 0;
uStack_64 = 0;
local_150 = 0;
local_14c = 0x403e0000;
local_154 = 1;
uStack_68 = 0x55e72c;
FUN_004ba8b0(&local_154,0,&local_150);
puVar2 = local_5c;
*(int *)(in_stack_00000004 + -8) = (char)*PTR_DAT_006120d4 + 1;
*in_FS_OFFSET = uStack_64;
local_5c = &LAB_0055e860;
uStack_60 = 0x55e753;
_System__VarClr_qqrr14System_Variant(local_148,uStack_64,puVar2);
uStack_60 = 0x55e75e;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_138);
uStack_60 = 0x55e769;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_134);
uStack_60 = 0x55e774;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_130);
uStack_60 = 0x55e77f;
_System__VarClr_qqrr14System_Variant(local_12c);
uStack_60 = 0x55e78a;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_11c);
uStack_60 = 0x55e795;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_118);
uStack_60 = 0x55e7a0;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_114);
uStack_60 = 0x55e7ab;
_System__VarClr_qqrr14System_Variant(local_110);
uStack_60 = 0x55e7b6;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_100);
uStack_60 = 0x55e7c1;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_fc);
uStack_60 = 0x55e7cc;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_f8);
uStack_60 = 0x55e7d7;
_System__VarClr_qqrr14System_Variant(local_f4);
uStack_60 = 0x55e7e2;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_e4);
uStack_60 = 0x55e7ed;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_e0);
uStack_60 = 0x55e7f8;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_dc);
uStack_60 = 0x55e803;
_System__VarClr_qqrr14System_Variant(local_d8);
uStack_60 = 0x55e80e;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_c8);
uStack_60 = 0x55e819;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_c4);
uStack_60 = 0x55e824;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_c0);
uStack_60 = 0x55e83a;
_System__FinalizeArray_qqrpvt1ui(local_bc,__xp_14System_Variant_exref,10);
uStack_60 = 0x55e84d;
_System__FinalizeArray_qqrpvt1ui(&local_1c,&DAT_00451990,2);
uStack_60 = 0x55e855;
_System__VarClr_qqrr14System_Variant(&stack0xffffffec);
return;
}
@@ -0,0 +1,369 @@
## bd_bn.json ev_a1d8bc17fc7017e4c7384eea1ae0561435f346226347b466a825a1d218dd6150
// 0x55e91c ok
void FUN_0055e91c(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)
{
undefined1 *puVar1;
char cVar2;
undefined4 *in_FS_OFFSET;
int *piVar3;
undefined4 uVar4;
undefined *local_40;
undefined1 *local_3c;
undefined *local_38;
int local_34;
int *local_30;
undefined4 local_2c;
undefined4 local_28;
undefined1 *local_24;
undefined1 *local_20;
int local_10;
undefined4 local_c;
undefined4 local_8;
local_20 = &stack0xfffffffc;
local_10 = 7;
do {
local_8 = 0;
local_10 = local_10 + -1;
} while (local_10 != 0);
local_24 = &LAB_0055ea9e;
local_28 = *in_FS_OFFSET;
*in_FS_OFFSET = &local_28;
local_2c = 0x55e94c;
_System__LStrClr_qqrpv(param_4 + -0xc);
local_2c = 0x55e962;
_System__LStrFromWStr_qqrr17System_AnsiStringx17System_WideString
(&local_8,*(undefined4 *)(*(int *)PTR_DAT_006120a4 + 0x6d10));
local_2c = local_8;
local_30 = &local_10;
local_34 = 0x55e974;
_Sysutils_IntToStr_qqri(param_1,&stack0xffffffe4);
local_34 = 0x55e98d;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055eab8,&stack0xffffffe8,0);
local_34 = local_10;
local_38 = &DAT_0055eac8;
local_3c = (undefined1 *)0x55e99f;
_Sysutils_IntToStr_qqri(param_2,&local_20);
local_3c = local_20;
local_40 = &DAT_0055ead4;
_System__LStrCatN_qqrv(&local_c,4);
cVar2 = MPOS();
if (cVar2 != '\0') {
_System__LStrFromWStr_qqrr17System_AnsiStringx17System_WideString
(&local_2c,*(undefined4 *)(*(int *)PTR_DAT_006120a4 + 0x6d10));
piVar3 = &local_34;
uVar4 = local_2c;
_Sysutils_IntToStr_qqri(param_1,&local_38);
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi
(&DAT_0055eab8,&stack0xffffffe8,0,piVar3,uVar4);
_Sysutils_IntToStr_qqri(param_2,&local_3c);
_System__LStrCatN_qqrv(&local_30,4);
RIGHT_STR();
LEFT_STR();
_System__LStrLAsg_qqrpvpxv(param_4 + -0xc,local_24);
}
_Sysutils_Trim_qqrx17System_AnsiString(*(undefined4 *)(param_4 + -0xc),&local_40);
_System__LStrLAsg_qqrpvpxv(param_4 + -0xc,local_40);
puVar1 = local_3c;
*in_FS_OFFSET = local_c;
local_3c = &LAB_0055eaa5;
local_40 = (undefined *)0x55ea90;
_System__LStrArrayClr_qqrpvi(&local_40,10,puVar1);
local_40 = (undefined *)0x55ea9d;
_System__LStrArrayClr_qqrpvi(&local_10,3);
return;
}
// 0x55ebd0 ok
void FUN_0055ebd0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)
{
undefined *puVar1;
undefined **ppuVar2;
int iVar3;
int iVar4;
undefined4 unaff_ESI;
undefined4 unaff_EDI;
undefined4 *in_FS_OFFSET;
undefined **local_9c;
undefined1 **local_98;
undefined *local_94;
undefined4 local_90;
undefined4 local_8c;
undefined4 *local_88;
undefined *local_84;
undefined *local_80;
undefined4 local_7c;
undefined4 local_78;
undefined **local_74;
undefined *local_70;
undefined4 local_6c;
undefined4 local_68;
undefined4 *local_64;
undefined *local_60;
undefined *local_5c;
undefined *local_58;
undefined *local_54;
undefined **local_50;
undefined *local_4c;
undefined **local_48;
undefined *local_44;
undefined4 *local_40;
undefined **local_3c;
undefined4 *local_38;
undefined1 *local_34;
undefined *local_30;
undefined1 *local_2c;
undefined1 **local_28;
undefined1 **local_24;
undefined1 *local_20;
undefined1 *local_1c;
int local_c [2];
local_1c = &stack0xfffffffc;
iVar4 = 0x13;
do {
local_c[1] = 0;
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
local_20 = &LAB_0055f0e2;
local_24 = (undefined1 **)*in_FS_OFFSET;
*in_FS_OFFSET = &local_24;
iVar4 = *(int *)PTR_DAT_006120a4;
local_28 = (undefined1 **)0x55ec0f;
_System__LStrClr_qqrpv(param_4 + -0xc);
local_28 = &local_1c;
local_2c = (undefined1 *)0x55ec1d;
_Sysutils_IntToStr_qqri(param_1,&local_28);
local_24 = local_28;
local_20._0_1_ = 0xb;
local_2c = (undefined1 *)0x55ec36;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_2c = local_1c;
local_30 = &DAT_0055f110;
local_34 = (undefined1 *)0x55ec48;
_Sysutils_IntToStr_qqri(1,&local_2c);
local_34 = local_2c;
local_38 = (undefined4 *)&DAT_0055f11c;
local_3c = (undefined **)0x55ec5d;
_System__LStrCatN_qqrv(&stack0xffffffe8,4);
local_3c = (undefined **)0x55ec68;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&stack0xffffffec,unaff_EDI);
local_3c = (undefined **)0x55ec76;
local_c[0] = _System__WStrPos_qqrv(unaff_ESI,*(undefined4 *)(iVar4 + 0x6740));
if (local_c[0] < 1) {
if (param_1 == 200) {
local_3c = &local_4c;
local_24 = (undefined1 **)&DAT_0055f140;
local_20._0_1_ = 0xb;
local_40 = (undefined4 *)0x55ed67;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_40 = (undefined4 *)local_4c;
local_44 = &DAT_0055f110;
local_48 = (undefined **)0x55ed79;
_Sysutils_IntToStr_qqri(1,&local_50);
local_48 = local_50;
local_4c = &DAT_0055f11c;
local_50 = (undefined **)0x55ed8e;
_System__LStrCatN_qqrv(&local_48,4);
local_50 = (undefined **)0x55ed99;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_44,local_48);
local_50 = (undefined **)0x55eda7;
local_c[0] = _System__WStrPos_qqrv(local_44,*(undefined4 *)(iVar4 + 0x6740));
local_50 = &local_5c;
local_24 = (undefined1 **)&DAT_0055f14c;
local_20._0_1_ = 0xb;
local_54 = (undefined *)0x55edc9;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_54 = local_5c;
local_58 = &DAT_0055f110;
local_5c = (undefined *)0x55eddb;
_Sysutils_IntToStr_qqri(1,&local_60);
local_5c = local_60;
local_60 = &DAT_0055f11c;
local_64 = (undefined4 *)0x55edf0;
_System__LStrCatN_qqrv(&local_58,4);
local_64 = (undefined4 *)0x55edfb;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_54,local_58);
local_64 = (undefined **)0x55ee09;
_System__WStrPos_qqrv(local_54,*(undefined4 *)(iVar4 + 0x6740));
if (local_c[0] < 1) {
local_3c = (undefined **)0x55ee1d;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_64,iVar4 + 0x6640);
local_3c = (undefined **)local_64;
local_40 = (undefined4 *)&DAT_0055f134;
local_44 = DAT_0068786c;
local_48 = (undefined **)0x55ee3c;
_System__LStrCatN_qqrv(param_4 + -0xc,3);
}
local_40 = (undefined4 *)0x55ee45;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(local_c);
local_40 = (undefined4 *)0x55ee4f;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(&stack0xfffffff0);
}
else if (param_1 == 0xca) {
local_3c = (undefined **)&local_38;
local_24 = (undefined1 **)&DAT_0055f128;
local_20._0_1_ = 0xb;
local_40 = (undefined4 *)0x55ecc6;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_40 = local_38;
local_44 = &DAT_0055f110;
local_48 = (undefined **)0x55ecd8;
_Sysutils_IntToStr_qqri(1,&local_3c);
local_48 = local_3c;
local_4c = &DAT_0055f11c;
local_50 = (undefined **)0x55eced;
_System__LStrCatN_qqrv(&local_34,4);
local_50 = (undefined **)0x55ecf8;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_30,local_34);
local_50 = (undefined **)0x55ed06;
local_c[0] = _System__WStrPos_qqrv(local_30,*(undefined4 *)(iVar4 + 0x6740));
if (local_c[0] < 1) {
local_3c = (undefined **)0x55ed1a;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_40,iVar4 + 0x6640);
local_3c = (undefined **)local_40;
local_40 = (undefined4 *)&DAT_0055f134;
local_44 = DAT_00687830;
local_48 = (undefined **)0x55ed39;
_System__LStrCatN_qqrv(param_4 + -0xc,3);
}
local_40 = (undefined4 *)0x55ed42;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(local_c);
}
else if (param_1 == 300) {
local_3c = &local_70;
local_24 = (undefined1 **)&DAT_0055f158;
local_20._0_1_ = 0xb;
local_40 = (undefined4 *)0x55ee74;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_40 = (undefined4 *)local_70;
local_44 = &DAT_0055f110;
local_48 = (undefined **)0x55ee86;
_Sysutils_IntToStr_qqri(1,&local_74);
local_48 = local_74;
local_4c = &DAT_0055f11c;
local_50 = (undefined **)0x55ee9b;
_System__LStrCatN_qqrv(&local_6c,4);
local_50 = (undefined **)0x55eea6;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_68,local_6c);
local_50 = (undefined **)0x55eeb4;
local_c[0] = _System__WStrPos_qqrv(local_68,*(undefined4 *)(iVar4 + 0x6740));
local_50 = &local_80;
local_24 = (undefined1 **)&DAT_0055f164;
local_20._0_1_ = 0xb;
local_54 = (undefined *)0x55eed6;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_54 = local_80;
local_58 = &DAT_0055f110;
local_5c = (undefined *)0x55eee8;
_Sysutils_IntToStr_qqri(1,&local_84);
local_5c = local_84;
local_60 = &DAT_0055f11c;
local_64 = (undefined4 *)0x55eefd;
_System__LStrCatN_qqrv(&local_7c,4);
local_64 = (undefined4 *)0x55ef08;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_78,local_7c);
local_64 = (undefined **)0x55ef16;
iVar3 = _System__WStrPos_qqrv(local_78,*(undefined4 *)(iVar4 + 0x6740));
if (local_c[0] < 1) {
local_3c = (undefined **)0x55ef2d;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_88,iVar4 + 0x6640);
local_3c = (undefined **)local_88;
local_40 = (undefined4 *)&DAT_0055f134;
local_44 = DAT_006878a8;
local_48 = (undefined **)0x55ef4f;
_System__LStrCatN_qqrv(param_4 + -0xc,3);
}
local_40 = (undefined4 *)0x55ef58;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(local_c);
local_40 = (undefined4 *)0x55ef62;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(&stack0xfffffff0);
if (iVar3 < 1) {
iVar3 = 0x12d;
do {
local_40 = (undefined4 *)0x55ef86;
ppuVar2 = local_3c;
local_3c = &local_94;
_Sysutils_IntToStr_qqri(iVar3,&local_98,ppuVar2);
local_24 = local_98;
local_20._0_1_ = 0xb;
local_40 = (undefined4 *)0x55efa2;
_Sysutils_Format_qqrx17System_AnsiStringpx14System_TVarRecxi(&DAT_0055f100,&local_24,0);
local_40 = (undefined4 *)local_94;
local_44 = &DAT_0055f110;
local_48 = (undefined **)0x55efba;
_Sysutils_IntToStr_qqri(1,&local_9c);
local_48 = local_9c;
local_4c = &DAT_0055f11c;
local_50 = (undefined **)0x55efd5;
_System__LStrCatN_qqrv(&local_90,4);
local_50 = (undefined **)0x55efe6;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_8c,local_90);
local_50 = (undefined **)0x55eff7;
_System__WStrPos_qqrv(local_8c,*(undefined4 *)(iVar4 + 0x6740));
local_40 = (undefined4 *)0x55f003;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(&stack0xfffffff0);
iVar3 = iVar3 + 1;
} while (iVar3 != 400);
}
}
}
if (0 < local_c[0]) {
local_40 = (undefined4 *)0x55f020;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(local_c);
local_40 = (undefined4 *)0x55f02a;
local_3c = (undefined **)&stack0xfffffffc;
FUN_0055eaf0(&stack0xfffffff0);
}
puVar1 = local_30;
*in_FS_OFFSET = local_38;
local_30 = &LAB_0055f0ec;
local_34 = (undefined1 *)0x55f048;
_System__LStrArrayClr_qqrpvi(&local_9c,4,puVar1);
local_34 = (undefined1 *)0x55f053;
_System__WStrClr_qqrpv(&local_8c);
local_34 = (undefined1 *)0x55f063;
_System__LStrArrayClr_qqrpvi(&local_88,4);
local_34 = (undefined1 *)0x55f06b;
_System__WStrClr_qqrpv(&local_78);
local_34 = (undefined1 *)0x55f078;
_System__LStrArrayClr_qqrpvi(&local_74,3);
local_34 = (undefined1 *)0x55f080;
_System__WStrClr_qqrpv(&local_68);
local_34 = (undefined1 *)0x55f08d;
_System__LStrArrayClr_qqrpvi(&local_64,4);
local_34 = (undefined1 *)0x55f095;
_System__WStrClr_qqrpv(&local_54);
local_34 = (undefined1 *)0x55f0a2;
_System__LStrArrayClr_qqrpvi(&local_50,3);
local_34 = (undefined1 *)0x55f0aa;
_System__WStrClr_qqrpv(&local_44);
local_34 = (undefined1 *)0x55f0b7;
_System__LStrArrayClr_qqrpvi(&local_40,4);
local_34 = (undefined1 *)0x55f0bf;
_System__WStrClr_qqrpv(&local_30);
local_34 = (undefined1 *)0x55f0cc;
_System__LStrArrayClr_qqrpvi(&local_2c,2);
local_34 = (undefined1 *)0x55f0d9;
_System__LStrArrayClr_qqrpvi(&local_1c,2);
local_34 = (undefined1 *)0x55f0e1;
_System__WStrClr_qqrpv(&stack0xffffffec);
return;
}
@@ -0,0 +1,980 @@
## pc_520a03.json ev_46ab67b1f650c41a015f50e8d10419b63274bf6bb1bd3ea022799702830cb907
void FUN_0051fa84(void)
{
undefined1 *puVar1;
int *piVar2;
short sVar3;
undefined3 uVar6;
undefined4 uVar4;
int iVar5;
int iVar7;
int iVar8;
undefined4 unaff_EDI;
undefined4 *in_FS_OFFSET;
float10 in_ST0;
int in_stack_00000004;
undefined4 local_394;
undefined4 local_390;
undefined4 local_38c;
undefined1 local_388 [16];
undefined1 local_378 [16];
int *local_368;
int *local_364;
int *local_360;
undefined1 local_35c [16];
undefined1 local_34c [16];
undefined1 local_33c [16];
int *local_32c;
int *local_328;
int *local_324;
undefined1 local_320 [16];
undefined1 local_310 [16];
int *local_300;
int *local_2fc;
int *local_2f8;
undefined1 local_2f4 [16];
int *local_2e4;
int *local_2e0;
int *local_2dc;
undefined1 local_2d8 [16];
int *local_2c8;
int *local_2c4;
int *local_2c0;
undefined1 local_2bc [16];
int *local_2ac;
int *local_2a8;
int *local_2a4;
undefined1 local_2a0 [16];
int *local_290;
int *local_28c;
int *local_288;
undefined1 local_284 [16];
int *local_274;
int *local_270;
int *local_26c;
undefined1 local_268 [16];
int *local_258;
int *local_254;
int *local_250;
undefined1 local_24c [16];
int *local_23c;
int *local_238;
int *local_234;
undefined1 local_230 [16];
int *local_220;
int *local_21c;
int *local_218;
undefined1 local_214 [16];
int *local_204;
int *local_200;
int *local_1fc;
int *local_1f8 [4];
undefined *local_1e8;
undefined1 *local_1e4;
int *local_1e0;
undefined4 local_1dc;
undefined4 local_1d8;
undefined4 local_1d4;
int *local_1d0;
int local_1cc;
int local_1c8;
undefined4 local_1c4;
undefined *local_1c0;
int local_1bc;
undefined4 local_1b8;
undefined *local_1b4;
undefined4 local_1b0;
int *local_1ac;
int *local_1a8 [4];
int *local_198 [4];
undefined1 local_188 [16];
undefined4 local_178;
int local_174 [4];
int local_164 [2];
char *pcStack_15c;
undefined *puStack_158;
int *local_154;
undefined4 uStack_150;
undefined4 uStack_14c;
undefined4 uStack_148;
int *local_144;
undefined4 uStack_140;
int iStack_13c;
undefined4 uStack_138;
int *local_134;
undefined4 local_130;
int *local_12c;
undefined *puStack_128;
undefined *puStack_124;
undefined4 uStack_120;
undefined4 local_11c;
undefined4 local_118;
int local_114 [4];
undefined1 *local_104;
undefined *local_100;
undefined4 local_fc;
undefined4 *puStack_f8;
undefined *puStack_f4;
undefined *puStack_f0;
undefined1 *local_ec;
undefined4 local_e8;
int local_e4 [2];
undefined4 **ppuStack_dc;
undefined4 uStack_d8;
int local_d4;
undefined4 uStack_d0;
undefined *puStack_cc;
int iStack_c8;
int *local_c4;
undefined *puStack_c0;
undefined *puStack_bc;
undefined1 *puStack_b8;
int *local_b4;
undefined4 uStack_b0;
undefined4 uStack_ac;
undefined4 uStack_a8;
int *local_a4;
int iStack_a0;
undefined4 uStack_9c;
undefined *puStack_98;
undefined4 local_94;
int *piStack_90;
undefined4 uStack_8c;
undefined4 uStack_88;
undefined1 *local_84;
int **local_80;
undefined4 local_7c;
int *local_78;
undefined4 *local_74;
undefined *local_70;
undefined1 *local_6c;
int **local_68;
undefined4 local_64;
undefined4 uStack_60;
undefined4 *puStack_5c;
undefined4 uStack_58;
undefined4 local_54;
undefined1 *puStack_50;
undefined1 *puStack_4c;
undefined4 uStack_48;
undefined4 local_44;
undefined1 *puStack_40;
undefined1 *puStack_3c;
undefined4 uStack_38;
undefined4 local_34;
undefined1 *local_30;
undefined1 *local_2c;
undefined4 uStack_28;
undefined4 local_24;
undefined1 *local_20;
undefined1 *local_1c;
local_1c = &stack0xfffffffc;
iVar7 = 0x72;
do {
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
local_20 = &LAB_00520d86;
local_24 = *in_FS_OFFSET;
*in_FS_OFFSET = &local_24;
*PTR_DAT_006120d4 = 4;
uStack_28 = 0x51fabb;
_System__VarFromInt_qqrr14System_Variantxixi(&local_24,0xe,1);
local_2c = local_1c;
local_30 = local_20;
local_34 = local_24;
uStack_38 = 0x51fad6;
uStack_28 = unaff_EDI;
_System__VarFromInt_qqrr14System_Variantxixi(&local_34,0xf,1);
uStack_38 = uStack_28;
puStack_3c = local_2c;
puStack_40 = local_30;
local_44 = local_34;
uVar6 = (undefined3)((uint)in_stack_00000004 >> 8);
uStack_48 = CONCAT31(uVar6,*(undefined1 *)(in_stack_00000004 + -1));
puStack_4c = &stack0xffffffec;
puStack_50 = (undefined1 *)0x51faf2;
IIF();
puStack_50 = &stack0xffffffec;
local_54 = 0x51fb05;
_System__VarFromInt_qqrr14System_Variantxixi(&local_44,2,1);
puVar1 = puStack_50;
puStack_50 = (undefined1 *)0x51fb0e;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(puVar1,&local_44);
puStack_50 = &stack0xffffffec;
local_54 = 0x51fb22;
_System__VarFromInt_qqrr14System_Variantxixi(&local_54,DAT_00687824,0xfc);
puVar1 = puStack_50;
puStack_50 = (undefined1 *)0x51fb2b;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(puVar1,&local_54);
puStack_50 = (undefined1 *)0x51fb33;
uVar4 = _System__VarToInt_qqrrx14System_Variant(&stack0xffffffec);
*(undefined4 *)PTR_DAT_00612088 = uVar4;
if (*(char *)(*(int *)PTR_DAT_006120a4 + 0x7bcd) == '\0') {
*(int *)PTR_DAT_00612088 = *(int *)PTR_DAT_00612088 + -2;
}
puStack_50 = (undefined1 *)0x51fb63;
FUN_004b3140(*(undefined4 *)PTR_DAT_00612088,1,1);
puStack_50 = (undefined1 *)0x51fb72;
_System__VarFromInt_qqrr14System_Variantxixi(&local_74,10,1);
puStack_50 = (undefined1 *)local_68;
local_54 = local_6c;
uStack_58 = local_70;
puStack_5c = local_74;
uStack_60 = 0x51fb8d;
_System__VarFromInt_qqrr14System_Variantxixi(&local_84,0xb,1);
uStack_60 = local_78;
local_64 = local_7c;
local_68 = local_80;
local_6c = local_84;
local_70 = (undefined *)CONCAT31(uVar6,*(undefined1 *)(in_stack_00000004 + -1));
local_74 = &local_64;
local_78 = (int *)0x51fba9;
IIF();
local_78 = &local_64;
local_7c = 0x51fbbf;
_System__VarFromInt_qqrr14System_Variantxixi(&local_94,1,1);
piVar2 = local_78;
local_78 = (int *)0x51fbcb;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(piVar2,&local_94);
local_78 = (int *)0x51fbd3;
iVar7 = _System__VarToInt_qqrrx14System_Variant(&local_64);
if (0 < iVar7) {
iVar8 = 1;
do {
if (iVar8 - 1U < 5) {
*(int *)(in_stack_00000004 + -8) = iVar8;
}
else if (iVar8 - 6U < 5) {
*(int *)(in_stack_00000004 + -8) = (iVar8 + -6) * 2 + 6 + DAT_00687824;
}
else {
*(int *)(in_stack_00000004 + -8) = iVar8 + 5 + DAT_00687824;
}
switch(iVar8) {
case 1:
local_78 = *(int **)(in_stack_00000004 + -8);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x51fca2;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_a4,*(int *)PTR_DAT_006120a4 + 0x3c94);
local_68 = &local_a4;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x51fcc7;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),4);
break;
case 2:
local_78 = *(int **)(in_stack_00000004 + -8);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x51fd08;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_b4,*(int *)PTR_DAT_006120a4 + 0x3d94);
local_68 = &local_b4;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x51fd2d;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),4);
break;
case 3:
local_78 = *(int **)(in_stack_00000004 + -8);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x51fd6e;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_c4,*(int *)PTR_DAT_006120a4 + 0x3e94);
local_68 = &local_c4;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x51fd93;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),4);
break;
case 4:
if (DAT_00687824 == 3) {
local_78 = (int *)DAT_00687b58;
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x51fde0;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_d4,*(int *)PTR_DAT_006120a4 + 0x3f94);
piStack_90 = &local_d4;
local_94 = 0;
puStack_98 = &DAT_00520da0;
uStack_9c = 0;
iStack_a0 = 0x51fe0b;
FUN_004b1bb8(3,DAT_00687b58 - DAT_00687824,3);
iVar5 = DAT_00687b58 + -3;
local_a4 = (int *)0x9;
uStack_a8 = 0xffffeff4;
uStack_ac = 0xffffeff4;
uStack_b0 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
local_b4 = (int *)0x1;
puStack_b8 = (undefined1 *)0x51fe4a;
iStack_a0 = iVar5;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_ec,*(int *)PTR_DAT_006120a4 + 0x198f);
puStack_b8 = local_ec;
puStack_bc = &DAT_00520dac;
puStack_c0 = &DAT_00520db8;
local_c4 = (int *)0x51fe6a;
_System__LStrCatN_qqrv(&local_e8,3);
local_c4 = (int *)0x51fe7b;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_e4,local_e8);
local_c4 = local_e4;
iStack_c8 = 0;
puStack_cc = &DAT_00520da0;
uStack_d0 = 0;
local_d4 = 0x51fe9c;
FUN_004b1bb8(4,iVar5,4);
iVar5 = DAT_00687b58 + -2;
uStack_d8 = 9;
ppuStack_dc = (int **)0xffffeff4;
local_e4[1] = 0xffffeff4;
local_e4[0] = *(int *)(*(int *)PTR_DAT_006120a4 + 6000);
local_e8 = 1;
local_ec = (undefined1 *)0x51fedb;
local_d4 = iVar5;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_104,*(int *)PTR_DAT_006120a4 + 0x1a8f);
local_ec = local_104;
puStack_f0 = &DAT_00520dac;
puStack_f4 = &DAT_00520dc4;
puStack_f8 = (undefined4 *)0x51fefb;
_System__LStrCatN_qqrv(&local_100,3);
puStack_f8 = (undefined4 *)0x51ff0c;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_fc,local_100);
puStack_f8 = &local_fc;
local_fc = 0;
local_100 = &DAT_00520da0;
local_104 = (undefined1 *)0x0;
local_114[3] = 0x51ff2d;
FUN_004b1bb8(4,iVar5,4);
iVar5 = DAT_00687b58 + -1;
local_114[2] = 9;
local_114[1] = 0xffffeff4;
local_114[0] = -0x100c;
local_118 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
local_11c = 1;
uStack_120 = 0x51ff6a;
local_114[3] = iVar5;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_11c,*(int *)PTR_DAT_006120a4 + 0x1b8f);
uStack_120 = local_11c;
puStack_124 = &DAT_00520dac;
puStack_128 = &DAT_00520dd0;
local_12c = (int *)0x51ff8a;
_System__LStrCatN_qqrv(&local_118,3);
local_12c = (int *)0x51ff9b;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_114,local_118);
local_12c = local_114;
local_130 = 0;
local_134 = (int *)&DAT_00520da0;
uStack_138 = 0;
iStack_13c = 0x51ffbc;
FUN_004b1bb8(4,iVar5,4);
iVar5 = DAT_00687b58;
iStack_13c = DAT_00687b58;
uStack_140 = 9;
local_144 = (int *)0xffffeff4;
uStack_148 = 0xffffeff4;
uStack_14c = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_150 = 1;
local_154 = (int *)0x51fffb;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_134,*(int *)PTR_DAT_006120a4 + 0x1c8f);
local_154 = local_134;
puStack_158 = &DAT_00520dac;
pcStack_15c = "(d=a*b*c)";
local_164[1] = 0x52001b;
_System__LStrCatN_qqrv(&local_130,3);
local_164[1] = 0x52002c;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_12c,local_130);
local_68 = &local_12c;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x52004d;
FUN_004b1bb8(4,iVar5,4);
}
else {
local_78 = (int *)DAT_00687b58;
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x52008d;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_144,*(int *)PTR_DAT_006120a4 + 0x3f94);
local_68 = &local_144;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x5200b8;
FUN_004b1bb8(3,DAT_00687b58 - DAT_00687824,4);
}
break;
case 5:
local_78 = (int *)DAT_00687b5c;
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x5200f8;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_154,*(int *)PTR_DAT_006120a4 + 0x4094);
local_68 = &local_154;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x52011d;
FUN_004b1bb8(3,DAT_00687b5c,4);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
if (iVar8 == 10) {
local_78 = (int *)(*(int *)(in_stack_00000004 + -8) + 1);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x52015b;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_164,&DAT_00520df0);
piStack_90 = local_164;
local_94 = 0;
puStack_98 = &DAT_00520da0;
uStack_9c = 0;
iStack_a0 = 0x520180;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),3);
}
else {
local_78 = (int *)(*(int *)(in_stack_00000004 + -8) + 1);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x5201c3;
_System__LStrFromChar_qqrr17System_AnsiStringc
(&local_178,
CONCAT31((int3)((uint)*(int *)PTR_DAT_006120a4 >> 8),
*(undefined1 *)(*(int *)PTR_DAT_006120a4 + 0x323 + iVar8)));
piStack_90 = (int *)0x5201d3;
iVar5 = _System__LStrPos_qqrv(local_178,"MLSTAN");
piStack_90 = (int *)0x5201f0;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(local_174,*(int *)PTR_DAT_006120a4 + 0x3294 + iVar5 * 0x100);
piStack_90 = local_174;
local_94 = 0;
puStack_98 = &DAT_00520da0;
uStack_9c = 0;
iStack_a0 = 0x520215;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),3);
}
iStack_a0 = *(int *)(in_stack_00000004 + -8);
local_a4 = (int *)0x9;
uStack_a8 = 0xffffeff4;
uStack_ac = 0xffffeff4;
uStack_b0 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
local_b4 = (int *)0x1;
puStack_b8 = (undefined1 *)0x520251;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(local_188,*(int *)PTR_DAT_006120a4 + 0x4194);
puStack_b8 = local_188;
puStack_bc = (undefined *)0x0;
puStack_c0 = &DAT_00520da0;
local_c4 = (int *)0x0;
iStack_c8 = 0x520276;
FUN_004b1bb8(4,*(undefined4 *)(in_stack_00000004 + -8),4);
iVar5 = *(int *)(in_stack_00000004 + -8) + 1;
puStack_cc = (undefined *)0x9;
uStack_d0 = 0xffffeff4;
local_d4 = -0x100c;
uStack_d8 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
ppuStack_dc = (int **)0x1;
local_e4[1] = 0x5202b3;
iStack_c8 = iVar5;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(local_198,*(int *)PTR_DAT_006120a4 + 0x4394);
local_68 = local_198;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x5202d7;
FUN_004b1bb8(4,iVar5,4);
break;
case 0xb:
local_78 = *(int **)(in_stack_00000004 + -8);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x520318;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(&local_1b8,*(int *)PTR_DAT_006120a4 + 0x4494);
piStack_90 = local_1ac;
local_94 = local_1b0;
puStack_98 = local_1b4;
uStack_9c = local_1b8;
iStack_a0 = 0x520340;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_1d8,&DAT_00520e18);
iStack_a0 = local_1cc;
local_a4 = local_1d0;
uStack_a8 = local_1d4;
uStack_ac = local_1d8;
uStack_b0 = 0x520368;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_1e8,&DAT_00520e2c);
uStack_b0 = local_1dc;
local_b4 = local_1e0;
puStack_b8 = local_1e4;
puStack_bc = local_1e8;
iVar5 = CONCAT22((short)((uint)*(int *)PTR_DAT_006120a4 >> 0x10),
*(undefined2 *)(*(int *)PTR_DAT_006120a4 + 0x1750)) + -7;
sVar3 = (short)iVar5;
puStack_c0 = (undefined *)
CONCAT31((int3)(CONCAT22((short)((uint)iVar5 >> 0x10),sVar3 + -1) >> 8),
sVar3 == 0);
local_c4 = &local_1c8;
iStack_c8 = 0x5203a5;
IIF();
iStack_c8 = local_1bc;
puStack_cc = local_1c0;
uStack_d0 = local_1c4;
local_d4 = local_1c8;
uStack_d8 = CONCAT31(uVar6,*(undefined1 *)(in_stack_00000004 + -1));
ppuStack_dc = local_1a8;
local_e4[1] = 0x5203d0;
IIF();
local_68 = local_1a8;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x5203f5;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),4);
break;
case 0xc:
local_78 = *(int **)(in_stack_00000004 + -8);
local_7c = 9;
local_80 = (int **)0xffffeff4;
local_84 = (undefined1 *)0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_8c = 1;
piStack_90 = (int *)0x520433;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(local_1f8,*(int *)PTR_DAT_006120a4 + 0x4494);
local_68 = local_1f8;
local_6c = (undefined1 *)0x0;
local_70 = &DAT_00520da0;
local_74 = (undefined4 *)0x0;
local_78 = (int *)0x520458;
FUN_004b1bb8(3,*(undefined4 *)(in_stack_00000004 + -8),4);
}
switch(iVar8) {
case 1:
local_78 = (int *)0x5204b0;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_204);
local_78 = (int *)0x5204c1;
(**(code **)(*local_204 + 0x2c))(local_204,&local_200);
local_78 = (int *)0x5204db;
(**(code **)(*local_200 + 0x168))
(local_200,*(undefined4 *)(in_stack_00000004 + -8),&local_1fc);
local_78 = local_1fc;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x5204ee;
FUN_004b5b78();
local_7c = 0x5204f9;
_System__VarFromReal_qqrv(local_214);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x520505;
(**(code **)(iVar5 + 0x50))(piVar2,local_214);
break;
case 2:
case 3:
local_78 = (int *)0x52051c;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_220);
local_78 = (int *)0x52052d;
(**(code **)(*local_220 + 0x2c))(local_220,&local_21c);
local_78 = (int *)0x520547;
(**(code **)(*local_21c + 0x168))
(local_21c,*(undefined4 *)(in_stack_00000004 + -8),&local_218);
local_78 = local_218;
local_7c = 0x403f0000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x52055a;
FUN_004b5b78();
local_7c = 0x520565;
_System__VarFromReal_qqrv(local_230);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x520571;
(**(code **)(iVar5 + 0x50))(piVar2,local_230);
break;
case 4:
local_78 = (int *)0x520588;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_23c);
local_78 = (int *)0x520599;
(**(code **)(*local_23c + 0x2c))(local_23c,&local_238);
local_78 = (int *)0x5205b3;
(**(code **)(*local_238 + 0x168))(local_238,DAT_00687b58,&local_234);
local_78 = local_234;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x5205c6;
FUN_004b5b78();
local_7c = 0x5205d1;
_System__VarFromReal_qqrv(local_24c);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x5205dd;
(**(code **)(iVar5 + 0x50))(piVar2,local_24c);
if (DAT_00687824 == 3) {
local_78 = (int *)0x5205fc;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_258);
local_78 = (int *)0x52060d;
(**(code **)(*local_258 + 0x2c))(local_258,&local_254);
local_78 = (int *)0x520628;
(**(code **)(*local_254 + 0x168))(local_254,DAT_00687b58 + -1,&local_250);
local_78 = local_250;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x52063b;
FUN_004b5b78();
local_7c = 0x520646;
_System__VarFromReal_qqrv(local_268);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x520652;
(**(code **)(iVar5 + 0x50))(piVar2,local_268);
local_78 = (int *)0x520664;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_274);
local_78 = (int *)0x520675;
(**(code **)(*local_274 + 0x2c))(local_274,&local_270);
local_78 = (int *)0x520692;
(**(code **)(*local_270 + 0x168))(local_270,DAT_00687b58 + -2,&local_26c);
local_78 = local_26c;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x5206a5;
FUN_004b5b78();
local_7c = 0x5206b0;
_System__VarFromReal_qqrv(local_284);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x5206bc;
(**(code **)(iVar5 + 0x50))(piVar2,local_284);
local_78 = (int *)0x5206ce;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_290);
local_78 = (int *)0x5206df;
(**(code **)(*local_290 + 0x2c))(local_290,&local_28c);
local_78 = (int *)0x5206fc;
(**(code **)(*local_28c + 0x168))(local_28c,DAT_00687b58 + -3,&local_288);
local_78 = local_288;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x52070f;
FUN_004b5b78();
local_7c = 0x52071a;
_System__VarFromReal_qqrv(local_2a0);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x520726;
(**(code **)(iVar5 + 0x50))(piVar2,local_2a0);
}
break;
case 5:
local_78 = (int *)0x52073d;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_2ac);
local_78 = (int *)0x52074e;
(**(code **)(*local_2ac + 0x2c))(local_2ac,&local_2a8);
local_78 = (int *)0x520768;
(**(code **)(*local_2a8 + 0x168))(local_2a8,DAT_00687b5c,&local_2a4);
local_78 = local_2a4;
local_7c = 0x40180000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x52077b;
FUN_004b5b78();
local_7c = 0x520786;
_System__VarFromReal_qqrv(local_2bc);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x520792;
(**(code **)(iVar5 + 0x50))(piVar2,local_2bc);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
local_78 = (int *)0x5207a9;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_2c8);
local_78 = (int *)0x5207ba;
(**(code **)(*local_2c8 + 0x2c))(local_2c8,&local_2c4);
local_78 = (int *)0x5207d4;
(**(code **)(*local_2c4 + 0x168))
(local_2c4,*(undefined4 *)(in_stack_00000004 + -8),&local_2c0);
local_78 = local_2c0;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x5207e7;
FUN_004b5b78();
local_7c = 0x5207f2;
_System__VarFromReal_qqrv(local_2d8);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x5207fe;
(**(code **)(iVar5 + 0x50))(piVar2,local_2d8);
local_78 = (int *)0x520810;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_2e4);
local_78 = (int *)0x520821;
(**(code **)(*local_2e4 + 0x2c))(local_2e4,&local_2e0);
local_78 = (int *)0x52083c;
(**(code **)(*local_2e0 + 0x168))(local_2e0,*(int *)(in_stack_00000004 + -8) + 1,&local_2dc)
;
local_78 = local_2dc;
local_7c = 0x402c0000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x52084f;
FUN_004b5b78();
local_7c = 0x52085a;
_System__VarFromReal_qqrv(local_2f4);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x520866;
(**(code **)(iVar5 + 0x50))(piVar2,local_2f4);
break;
case 0xb:
case 0xc:
local_78 = (int *)0x52087a;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_300);
local_78 = (int *)0x52088b;
(**(code **)(*local_300 + 0x2c))(local_300,&local_2fc);
local_78 = (int *)0x5208a5;
(**(code **)(*local_2fc + 0x168))
(local_2fc,*(undefined4 *)(in_stack_00000004 + -8),&local_2f8);
local_78 = local_2f8;
local_7c = 0x40280000;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x5208b8;
FUN_004b5b78();
local_7c = 0x5208c3;
_System__VarFromReal_qqrv(local_310);
piVar2 = local_78;
iVar5 = *local_78;
local_78 = (int *)0x5208cf;
(**(code **)(iVar5 + 0x50))(piVar2,local_310);
}
iVar8 = iVar8 + 1;
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
}
if (*(char *)(*(int *)PTR_DAT_006120a4 + 0x7bcd) == '\0') {
local_78 = (int *)0x5208fd;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_32c);
local_78 = (int *)0x52090e;
(**(code **)(*local_32c + 0x2c))(local_32c,&local_328);
local_78 = (int *)0x52092b;
(**(code **)(*local_328 + 0x168))(local_328,DAT_00687824 + 0xf,&local_324);
local_78 = local_324;
local_7c = 0x52093d;
_Variants_Null_qqrv(local_34c);
local_7c = 0x52094e;
_System__OleVarFromVar_qqrr17System_OleVariantrx14System_Variant(local_33c,local_34c);
piVar2 = local_78;
iVar7 = *local_78;
local_78 = (int *)0x520963;
(**(code **)(iVar7 + 0xe4))(piVar2,local_33c,local_320);
local_78 = (int *)0x520975;
FUN_004583b8(*(undefined4 *)PTR_DAT_006120b8,&local_368);
local_78 = (int *)0x520986;
(**(code **)(*local_368 + 0x2c))(local_368,&local_364);
local_78 = (int *)0x5209a3;
(**(code **)(*local_364 + 0x168))(local_364,DAT_00687824 + 0xe,&local_360);
local_78 = local_360;
local_7c = 0x5209b5;
_Variants_Null_qqrv(local_388);
local_7c = 0x5209c6;
_System__OleVarFromVar_qqrr17System_OleVariantrx14System_Variant(local_378,local_388);
piVar2 = local_78;
iVar7 = *local_78;
local_78 = (int *)0x5209db;
(**(code **)(iVar7 + 0xe4))(piVar2,local_378,local_35c);
}
local_78 = (int *)0x0;
local_7c = *(undefined4 *)PTR_DAT_00612088;
local_80 = (int **)0x520a0f;
FUN_004b61b8((int)*(char *)(*(int *)PTR_DAT_006120a4 + 0x529f),
(int)*(char *)(*(int *)PTR_DAT_006120a4 + 0x1788),(int)(char)*PTR_DAT_006120d4);
*(double *)PTR_DAT_006120cc = (double)in_ST0;
local_80 = (int **)0x0;
local_84 = (undefined1 *)0x1;
local_390 = *(undefined4 *)PTR_DAT_006120cc;
local_38c = *(undefined4 *)(PTR_DAT_006120cc + 4);
local_394 = 0;
uStack_88 = 0x520a4c;
FUN_004ba8b0(&local_394,0,&local_390);
uStack_88 = 0;
uStack_8c = 0;
local_390 = 0;
local_38c = 0x40390000;
local_394 = 1;
piStack_90 = (int *)0x520a7f;
FUN_004ba8b0(&local_394,0,&local_390);
puVar1 = local_84;
*(int *)(in_stack_00000004 + -0xc) = (char)*PTR_DAT_006120d4 + 1;
*in_FS_OFFSET = uStack_8c;
local_84 = &LAB_00520d90;
uStack_88 = 0x520aa6;
_System__VarClr_qqrr14System_Variant(local_388,uStack_8c,puVar1);
uStack_88 = 0x520ab1;
_System__VarClr_qqrr14System_Variant(local_378);
uStack_88 = 0x520abc;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_368);
uStack_88 = 0x520ac7;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_364);
uStack_88 = 0x520ad2;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_360);
uStack_88 = 0x520add;
_System__VarClr_qqrr14System_Variant(local_35c);
uStack_88 = 0x520ae8;
_System__VarClr_qqrr14System_Variant(local_34c);
uStack_88 = 0x520af3;
_System__VarClr_qqrr14System_Variant(local_33c);
uStack_88 = 0x520afe;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_32c);
uStack_88 = 0x520b09;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_328);
uStack_88 = 0x520b14;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_324);
uStack_88 = 0x520b2a;
_System__FinalizeArray_qqrpvt1ui(local_320,__xp_17System_OleVariant_exref,2);
uStack_88 = 0x520b35;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_300);
uStack_88 = 0x520b40;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2fc);
uStack_88 = 0x520b4b;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2f8);
uStack_88 = 0x520b56;
_System__VarClr_qqrr14System_Variant(local_2f4);
uStack_88 = 0x520b61;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2e4);
uStack_88 = 0x520b6c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2e0);
uStack_88 = 0x520b77;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2dc);
uStack_88 = 0x520b82;
_System__VarClr_qqrr14System_Variant(local_2d8);
uStack_88 = 0x520b8d;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2c8);
uStack_88 = 0x520b98;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2c4);
uStack_88 = 0x520ba3;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2c0);
uStack_88 = 0x520bae;
_System__VarClr_qqrr14System_Variant(local_2bc);
uStack_88 = 0x520bb9;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2ac);
uStack_88 = 0x520bc4;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2a8);
uStack_88 = 0x520bcf;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2a4);
uStack_88 = 0x520bda;
_System__VarClr_qqrr14System_Variant(local_2a0);
uStack_88 = 0x520be5;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_290);
uStack_88 = 0x520bf0;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_28c);
uStack_88 = 0x520bfb;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_288);
uStack_88 = 0x520c06;
_System__VarClr_qqrr14System_Variant(local_284);
uStack_88 = 0x520c11;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_274);
uStack_88 = 0x520c1c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_270);
uStack_88 = 0x520c27;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_26c);
uStack_88 = 0x520c32;
_System__VarClr_qqrr14System_Variant(local_268);
uStack_88 = 0x520c3d;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_258);
uStack_88 = 0x520c48;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_254);
uStack_88 = 0x520c53;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_250);
uStack_88 = 0x520c5e;
_System__VarClr_qqrr14System_Variant(local_24c);
uStack_88 = 0x520c69;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_23c);
uStack_88 = 0x520c74;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_238);
uStack_88 = 0x520c7f;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_234);
uStack_88 = 0x520c8a;
_System__VarClr_qqrr14System_Variant(local_230);
uStack_88 = 0x520c95;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_220);
uStack_88 = 0x520ca0;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_21c);
uStack_88 = 0x520cab;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_218);
uStack_88 = 0x520cb6;
_System__VarClr_qqrr14System_Variant(local_214);
uStack_88 = 0x520cc1;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_204);
uStack_88 = 0x520ccc;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_200);
uStack_88 = 0x520cd7;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1fc);
uStack_88 = 0x520ced;
_System__FinalizeArray_qqrpvt1ui(local_1f8,__xp_14System_Variant_exref,8);
uStack_88 = 0x520cf8;
_System__LStrClr_qqrpv(&local_178);
uStack_88 = 0x520d0e;
_System__FinalizeArray_qqrpvt1ui(local_174,__xp_14System_Variant_exref,4);
uStack_88 = 0x520d1e;
_System__LStrArrayClr_qqrpvi(&local_134,2);
uStack_88 = 0x520d29;
_System__VarClr_qqrr14System_Variant(&local_12c);
uStack_88 = 0x520d39;
_System__LStrArrayClr_qqrpvi(&local_11c,2);
uStack_88 = 0x520d44;
_System__VarClr_qqrr14System_Variant(local_114);
uStack_88 = 0x520d54;
_System__LStrArrayClr_qqrpvi(&local_104,2);
uStack_88 = 0x520d5f;
_System__VarClr_qqrr14System_Variant(&local_fc);
uStack_88 = 0x520d6f;
_System__LStrArrayClr_qqrpvi(&local_ec,2);
uStack_88 = 0x520d85;
_System__FinalizeArray_qqrpvt1ui(local_e4,__xp_14System_Variant_exref,0xe);
return;
}
@@ -0,0 +1,425 @@
## bd2.json ev_9f7d7c9b43294bb88e27030deb0a89a3bbe35b44a00b7ef929952bdb62bbec12
// 0x520e34 ok
void FUN_00520e34(void)
{
undefined4 *puVar1;
undefined4 uVar2;
int iVar3;
int unaff_EBX;
undefined *puVar4;
int *piVar5;
undefined4 *in_FS_OFFSET;
int in_stack_00000004;
undefined1 local_13c [12];
undefined4 uStack_130;
undefined4 local_12c;
undefined4 uStack_128;
undefined4 uStack_124;
undefined4 uStack_120;
undefined4 local_11c;
undefined *local_118;
undefined4 local_114;
undefined4 **local_110;
undefined4 local_10c;
undefined4 *local_108;
undefined4 local_104;
undefined4 local_100;
undefined4 local_fc;
undefined4 uStack_f8;
undefined4 *puStack_f4;
int iStack_f0;
undefined4 local_ec;
undefined *puStack_e8;
undefined4 uStack_e4;
undefined4 **ppuStack_e0;
undefined4 local_dc;
undefined4 *puStack_d8;
undefined4 uStack_d4;
undefined4 uStack_d0;
undefined4 *local_cc;
int iStack_c8;
undefined4 uStack_c4;
undefined *puStack_c0;
undefined4 local_bc;
undefined4 *puStack_b8;
undefined4 uStack_b4;
undefined4 uStack_b0;
undefined4 *local_ac;
undefined4 uStack_a8;
undefined4 uStack_a4;
undefined4 uStack_a0;
undefined4 local_9c;
undefined *puStack_98;
undefined4 uStack_94;
undefined4 *puStack_90;
undefined4 local_8c;
undefined4 uStack_88;
undefined4 uStack_84;
undefined4 uStack_80;
undefined4 local_7c;
undefined4 uStack_78;
undefined4 uStack_74;
undefined *puStack_70;
undefined4 *local_6c;
undefined4 *puStack_68;
undefined4 uStack_64;
undefined4 uStack_60;
undefined4 local_5c;
undefined4 uStack_58;
undefined4 uStack_54;
undefined4 uStack_50;
undefined4 local_4c;
undefined *puStack_48;
undefined4 uStack_44;
undefined1 **ppuStack_40;
undefined4 local_3c;
undefined4 uStack_38;
undefined4 uStack_34;
undefined4 uStack_30;
undefined4 local_2c;
undefined4 uStack_28;
undefined4 uStack_24;
undefined1 *puStack_20;
undefined1 *local_1c;
int local_c;
local_1c = &stack0xfffffffc;
iVar3 = 0x27;
do {
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
piVar5 = (int *)(in_stack_00000004 + -0xc);
puStack_20 = &LAB_00521510;
uStack_24 = *in_FS_OFFSET;
*in_FS_OFFSET = &uStack_24;
DAT_00687b69 = 1;
if ((*piVar5 - (int)(char)*PTR_DAT_006120d4) % *(int *)PTR_DAT_00612168 != 1) {
*(int *)(in_stack_00000004 + -8) =
((*piVar5 - (int)(char)*PTR_DAT_006120d4) + -1) / *(int *)PTR_DAT_00612168;
while (((*piVar5 - (int)(char)*PTR_DAT_006120d4) + -1) / *(int *)PTR_DAT_00612168 <=
*(int *)(in_stack_00000004 + -8)) {
uStack_28 = 1;
local_2c = 9;
uStack_30 = 0xffffefdd;
uStack_34 = 0xffffeff4;
uStack_38 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
local_3c = 1;
ppuStack_40 = (undefined1 **)0x520ecb;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_1c,0);
ppuStack_40 = &local_1c;
uStack_44 = 0;
puStack_48 = &DAT_0052152c;
local_4c = 0;
uStack_50 = 0x520ef7;
FUN_004b1bb8(*piVar5,1,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
uStack_50 = 2;
uStack_54 = 9;
uStack_58 = 0xffffefdd;
local_5c = 0xffffeff4;
uStack_60 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_64 = 1;
puStack_68 = (undefined4 *)0x520f1f;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_2c,0);
puStack_68 = &local_2c;
local_6c = (undefined4 *)0x0;
puStack_70 = &DAT_0052152c;
uStack_74 = 0;
uStack_78 = 0x520f4b;
FUN_004b1bb8(*piVar5,2,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
uStack_78 = 3;
local_7c = 9;
uStack_80 = 0xffffefdd;
uStack_84 = 0xffffeff4;
uStack_88 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
local_8c = 1;
puStack_90 = (undefined4 *)0x520f73;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_3c,0);
puStack_90 = &local_3c;
uStack_94 = 0;
puStack_98 = &DAT_0052152c;
local_9c = 0;
uStack_a0 = 0x520f9f;
FUN_004b1bb8(*piVar5,3,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
uStack_a0 = DAT_00687b5c;
uStack_a4 = 9;
uStack_a8 = 0xffffeff4;
local_ac = (undefined4 *)0xffffeff4;
uStack_b0 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
uStack_b4 = 1;
puStack_b8 = (undefined4 *)0x520fcb;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_4c,0);
puStack_b8 = &local_4c;
local_bc = 0;
puStack_c0 = &DAT_0052152c;
uStack_c4 = 0;
iStack_c8 = 0x520ff8;
FUN_004b1bb8(*piVar5,DAT_00687b5c,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1)
;
if (*(char *)(in_stack_00000004 + -1) != '\0') {
iVar3 = *(int *)PTR_DAT_00612088;
local_cc = (undefined4 *)0x9;
uStack_d0 = 0xffffefdd;
uStack_d4 = 0xffffeff4;
puStack_d8 = *(undefined4 **)(*(int *)PTR_DAT_006120a4 + 6000);
local_dc = 1;
ppuStack_e0 = (undefined4 **)0x521031;
iStack_c8 = iVar3 + -1;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_5c,0);
puStack_b8 = &local_5c;
local_bc = 0;
puStack_c0 = &DAT_0052152c;
uStack_c4 = 0;
iStack_c8 = 0x52105f;
FUN_004b1bb8(*piVar5,iVar3 + -1,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1)
;
}
if (DAT_00687824 == 3) {
iVar3 = DAT_00687b58 + -3;
local_cc = (undefined4 *)0x9;
uStack_d0 = 0xffffefc8;
uStack_d4 = 0xffffeff4;
puStack_d8 = (undefined4 *)0x521089;
iStack_c8 = iVar3;
puStack_d8 = (undefined4 *)FUN_004a8a78(unaff_EBX);
local_dc = 1;
ppuStack_e0 = (undefined4 **)0x521096;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_6c,0);
ppuStack_e0 = &local_6c;
uStack_e4 = 0;
puStack_e8 = &DAT_0052152c;
local_ec = 0;
iStack_f0 = 0x5210bf;
FUN_004b1bb8(*piVar5,iVar3,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
iVar3 = DAT_00687b58 + -2;
puStack_f4 = (undefined4 *)0x9;
uStack_f8 = 0xffffefc8;
local_fc = 0xffffeff4;
local_100 = 0x5210dc;
iStack_f0 = iVar3;
local_100 = FUN_004a8a78(unaff_EBX);
local_104 = 1;
local_108 = (undefined4 *)0x5210e9;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_7c,0);
local_108 = &local_7c;
local_10c = 0;
local_110 = (undefined4 **)&DAT_0052152c;
local_114 = 0;
local_118 = (undefined *)0x521112;
FUN_004b1bb8(*piVar5,iVar3,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
puVar4 = (undefined *)(DAT_00687b58 + -1);
local_11c = 9;
uStack_120 = 0xffffefc8;
uStack_124 = 0xffffeff4;
uStack_128 = 0x52112d;
local_118 = puVar4;
uStack_128 = FUN_004a8a78(unaff_EBX);
local_12c = 1;
uStack_130 = 0x52113d;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_8c,0);
puStack_b8 = &local_8c;
local_bc = 0;
puStack_c0 = &DAT_0052152c;
uStack_c4 = 0;
iStack_c8 = 0x521169;
FUN_004b1bb8(*piVar5,puVar4,*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
}
local_c = (int)*(char *)(*(int *)PTR_DAT_006120a4 + 0x1788);
if (0 < local_c) {
unaff_EBX = 1;
do {
iStack_c8 = DAT_00687b58;
local_cc = (undefined4 *)0x9;
uStack_d0 = 0xffffefc8;
uStack_d4 = 0xffffeff4;
puStack_d8 = (undefined4 *)0x5211a0;
puStack_d8 = (undefined4 *)FUN_004a8a78(unaff_EBX);
local_dc = 1;
ppuStack_e0 = (undefined4 **)0x5211b0;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_9c,0);
puStack_b8 = &local_9c;
local_bc = 0;
puStack_c0 = &DAT_0052152c;
uStack_c4 = 0;
iVar3 = *piVar5 + unaff_EBX + -1;
iStack_c8 = 0x5211d4;
FUN_004b1bb8(iVar3,DAT_00687b58,iVar3);
iVar3 = 1;
do {
iStack_c8 = iVar3 * 2 + 4 + DAT_00687824;
local_cc = (undefined4 *)0x9;
uStack_d0 = 0xffffefc8;
uStack_d4 = 0xffffeff4;
puStack_d8 = (undefined4 *)0x5211fb;
puStack_d8 = (undefined4 *)FUN_004a8a78(unaff_EBX);
local_dc = 1;
ppuStack_e0 = (undefined4 **)0x52120b;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_ac,0);
ppuStack_e0 = &local_ac;
uStack_e4 = 0;
puStack_e8 = &DAT_0052152c;
local_ec = 0;
iStack_f0 = 0x521238;
FUN_004b1bb8(*piVar5 + unaff_EBX + -1,iVar3 * 2 + 4 + DAT_00687824,
*piVar5 + unaff_EBX + -1);
iStack_f0 = iVar3 * 2 + 5 + DAT_00687824;
puStack_f4 = (undefined4 *)0x9;
uStack_f8 = 0xffffefc8;
local_fc = 0xffffeff4;
local_100 = 0x521259;
local_100 = FUN_004a8a78(unaff_EBX);
local_104 = 1;
local_108 = (undefined4 *)0x521269;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_bc,0);
puStack_b8 = &local_bc;
local_bc = 0;
puStack_c0 = &DAT_0052152c;
uStack_c4 = 0;
iStack_c8 = 0x521295;
FUN_004b1bb8(*piVar5 + unaff_EBX + -1,iVar3 * 2 + 5 + DAT_00687824,
*piVar5 + unaff_EBX + -1);
iVar3 = iVar3 + 1;
} while (iVar3 != 5);
if (*(char *)(*(int *)PTR_DAT_006120a4 + 0x7bcd) != '\0') {
iStack_c8 = DAT_00687824 + 0xe;
local_cc = (undefined4 *)0x9;
uStack_d0 = 0xffffefc8;
uStack_d4 = 0xffffeff4;
puStack_d8 = (undefined4 *)0x5212cf;
puStack_d8 = (undefined4 *)FUN_004a8a78(unaff_EBX);
local_dc = 1;
ppuStack_e0 = (undefined4 **)0x5212df;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_cc,0);
ppuStack_e0 = &local_cc;
uStack_e4 = 0;
puStack_e8 = &DAT_0052152c;
local_ec = 0;
iVar3 = *piVar5 + unaff_EBX + -1;
iStack_f0 = 0x521306;
FUN_004b1bb8(iVar3,DAT_00687824 + 0xe,iVar3);
iStack_f0 = DAT_00687824 + 0xf;
puStack_f4 = (undefined4 *)0x9;
uStack_f8 = 0xffffefc8;
local_fc = 0xffffeff4;
local_100 = 0x521322;
local_100 = FUN_004a8a78(unaff_EBX);
local_104 = 1;
local_108 = (undefined4 *)0x521332;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_dc,0);
puStack_b8 = &local_dc;
local_bc = 0;
puStack_c0 = &DAT_0052152c;
uStack_c4 = 0;
iVar3 = *piVar5 + unaff_EBX + -1;
iStack_c8 = 0x521359;
FUN_004b1bb8(iVar3,DAT_00687824 + 0xf,iVar3);
}
if (1 < unaff_EBX) {
iStack_c8 = 2;
local_cc = (undefined4 *)0x521376;
_System__VarFromInt_qqrr14System_Variantxixi(&local_ec,0xd,1);
local_cc = &local_ec;
uStack_d0 = 0x52138c;
_System__VarFromInt_qqrr14System_Variantxixi(&local_10c,0,1);
uStack_d0 = local_100;
uStack_d4 = local_104;
puStack_d8 = local_108;
local_dc = local_10c;
ppuStack_e0 = (undefined4 **)0x5213b6;
_System__VarFromInt_qqrr14System_Variantxixi(&local_11c,2,1);
ppuStack_e0 = local_110;
uStack_e4 = local_114;
puStack_e8 = local_118;
local_ec = local_11c;
iStack_f0 = CONCAT31((int3)((uint)*(int *)PTR_DAT_006120a4 >> 8),
*(undefined1 *)(*(int *)PTR_DAT_006120a4 + 0x7bcd));
puStack_f4 = &local_fc;
uStack_f8 = 0x5213e8;
IIF();
puVar1 = puStack_f4;
puStack_f4 = (undefined4 *)0x5213f4;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(puVar1,&local_fc);
puStack_f4 = &local_ec;
uStack_f8 = 0x52140e;
_System__VarFromInt_qqrr14System_Variantxixi(&local_12c,DAT_00687824,0xfc);
puVar1 = puStack_f4;
puStack_f4 = (undefined4 *)0x52141a;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(puVar1,&local_12c);
puStack_f4 = (undefined4 *)0x521425;
uVar2 = _System__VarToInt_qqrrx14System_Variant(&local_ec);
iStack_c8 = 0x521438;
FUN_004b51d4(*piVar5 + unaff_EBX + -2,1,uVar2);
}
unaff_EBX = unaff_EBX + 1;
local_c = local_c + -1;
} while (local_c != 0);
}
iStack_c8 = *(int *)PTR_DAT_00612088;
local_cc = (undefined4 *)0x9;
uStack_d0 = 0xffffeff4;
uStack_d4 = 0xffffefdd;
puStack_d8 = (undefined4 *)
CONCAT31((int3)((uint)in_stack_00000004 >> 8),
*(undefined1 *)(in_stack_00000004 + -1));
local_dc = 0x521462;
local_dc = IFI();
ppuStack_e0 = (undefined4 **)0xffffeff4;
uStack_e4 = *(undefined4 *)(*(int *)PTR_DAT_006120a4 + 6000);
puStack_e8 = (undefined *)0x1;
local_ec = 0x521485;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_13c,0);
local_1c = (undefined1 *)0x0;
puStack_20 = &DAT_0052152c;
uStack_24 = 0;
uStack_28 = 0x5214b7;
FUN_004b1bb8(*piVar5,*(undefined4 *)PTR_DAT_00612088,
*piVar5 + *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788) + -1);
*piVar5 = *piVar5 + (int)*(char *)(*(int *)PTR_DAT_006120a4 + 0x1788);
}
}
*in_FS_OFFSET = uStack_24;
local_1c = &LAB_00521517;
puStack_20 = (undefined1 *)0x52150f;
_System__FinalizeArray_qqrpvt1ui(local_13c,__xp_14System_Variant_exref,0x13);
return;
}
// 0x4b4eb0 ok
void FUN_004b4eb0(int param_1,int param_2,int param_3,int param_4)
{
undefined1 *puVar1;
undefined4 *in_FS_OFFSET;
undefined4 uStack_24;
undefined1 *puStack_20;
undefined1 *puStack_1c;
undefined4 local_c;
int local_8;
puStack_1c = &stack0xfffffffc;
local_c = 0;
puStack_20 = &LAB_004b4f1b;
uStack_24 = *in_FS_OFFSET;
*in_FS_OFFSET = &uStack_24;
if (param_3 == 0) {
param_3 = param_1;
}
if (param_4 == 0) {
param_4 = param_2;
}
local_8 = param_2;
FUN_004582bc(DAT_00624784,param_1,param_2,&local_c,param_4,param_3);
_System__IntfCopy_qqrr45System__DelphiInterface_t17System_IInterface_x45System__DelphiInterface_t17System_IInterface_
(&DAT_00624748,local_c);
puVar1 = puStack_1c;
*in_FS_OFFSET = uStack_24;
puStack_1c = &LAB_004b4f22;
puStack_20 = (undefined1 *)0x4b4f1a;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_c,uStack_24,puVar1);
return;
}
@@ -0,0 +1,271 @@
## bd1.json ev_bbdea766fd0a61e70c4e727641e6a50b31521165c6c5eb5e2b2102ccbf3deab7
// 0x4b61b8 ok
void FUN_004b61b8(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)
{
undefined4 *puVar1;
undefined4 uVar2;
int iVar3;
undefined4 *in_FS_OFFSET;
float10 fVar4;
undefined1 local_e8 [80];
undefined1 local_98 [4];
undefined1 local_94 [32];
undefined1 local_74 [4];
undefined1 local_70 [16];
undefined4 local_60;
undefined4 local_5c;
undefined8 local_58;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 uStack_3c;
undefined4 uStack_38;
undefined4 uStack_34;
undefined4 local_30;
undefined4 *puStack_2c;
undefined4 uStack_28;
undefined1 *puStack_24;
int local_20;
iVar3 = 0x1d;
do {
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
LOCK();
UNLOCK();
puStack_24 = &LAB_004b6504;
uStack_28 = *in_FS_OFFSET;
*in_FS_OFFSET = &uStack_28;
fVar4 = (float10)param_1 / (float10)param_2;
puStack_2c = (undefined4 *)0x4b61f7;
local_20 = param_2;
iVar3 = _System__TRUNC_qqrv();
DAT_00624774 = iVar3 * param_2;
puStack_2c = (undefined4 *)0x4b6214;
_System__VarFromInt_qqrr14System_Variantxixi(&local_30,iVar3 * param_2,0xfc);
puStack_2c = &local_30;
local_30 = 0x4b6227;
_System__VarFromInt_qqrr14System_Variantxixi(&local_50,1,1);
local_30 = local_44;
uStack_34 = local_48;
uStack_38 = local_4c;
uStack_3c = local_50;
local_40 = 0x4b623f;
uVar2 = _System__VarFromInt_qqrr14System_Variantxixi(&local_60,0,1);
local_40 = local_58._4_4_;
local_44 = (undefined4)local_58;
local_48 = local_5c;
local_4c = local_60;
local_50 = CONCAT31((int3)((uint)uVar2 >> 8),1 < param_5);
local_58._4_4_ = &local_40;
local_58._0_4_ = 0x4b625b;
IIF();
puVar1 = local_58._4_4_;
local_58 = (double)CONCAT44(0x4b6264,(undefined4)local_58);
_System__VarSub_qqrr14System_Variantrx14System_Variant(puVar1,&local_40);
local_58 = (double)CONCAT44(0x4b626c,(undefined4)local_58);
uVar2 = _System__VarToInt_qqrrx14System_Variant(&local_30);
if (param_5 == 0) {
param_5 = 0x19;
}
local_58 = (double)param_5;
local_5c = 0x4b6289;
local_20 = param_5;
FUN_004b5afc();
local_58 = (double)fVar4;
local_5c = param_4;
local_60 = 0x4b62a3;
FUN_004b5bd0(1,uVar2,0);
*in_FS_OFFSET = local_5c;
local_58._4_4_ = (undefined4 *)&LAB_004b650b;
local_58._0_4_ = 0x4b64c7;
_System__FinalizeArray_qqrpvt1ui(local_e8,__xp_14System_Variant_exref,5);
local_58._0_4_ = 0x4b64d2;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(local_98);
local_58._0_4_ = 0x4b64e8;
_System__FinalizeArray_qqrpvt1ui(local_94,__xp_14System_Variant_exref,2);
local_58._0_4_ = 0x4b64f0;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(local_74);
local_58 = (double)CONCAT44(local_58._4_4_,0x4b6503);
_System__FinalizeArray_qqrpvt1ui(local_70,__xp_14System_Variant_exref,5);
return;
}
// 0x4ba8b0 ok
void FUN_004ba8b0(undefined4 param_1,int param_2,undefined4 param_3,char param_4,int param_5)
{
int iVar1;
int *piVar2;
undefined1 *puVar3;
int *unaff_EBX;
int iVar4;
double *pdVar5;
undefined4 *puVar6;
undefined4 *in_FS_OFFSET;
float10 in_ST0;
float10 fVar7;
float10 in_ST1;
float10 in_ST2;
float10 in_ST3;
float10 fVar8;
float10 in_ST4;
float10 in_ST5;
float10 in_ST6;
float10 fVar9;
float10 in_ST7;
undefined1 local_44 [12];
undefined4 uStack_38;
int *local_34;
int *local_30;
int *local_2c;
undefined1 *local_28;
undefined1 *local_24;
int *local_14;
int *local_10;
int local_c;
int local_8;
local_24 = &stack0xfffffffc;
local_14 = (int *)&DAT_00000007;
do {
local_c = 0;
local_14 = (int *)((int)local_14 + -1);
} while (local_14 != (int *)0x0);
LOCK();
UNLOCK();
for (iVar4 = param_5 * 2 + 1; -1 < iVar4; iVar4 = iVar4 + -1) {
}
pdVar5 = (double *)&stack0xffffffe0;
for (iVar4 = param_2; -1 < iVar4; iVar4 = iVar4 + -1) {
}
puVar6 = (undefined4 *)&stack0xffffffe0;
local_28 = &LAB_004baa7d;
local_2c = (int *)*in_FS_OFFSET;
*in_FS_OFFSET = &local_2c;
local_8 = 0;
if (-1 < param_2) {
local_c = param_2 + 1;
local_8 = 0;
local_24 = &stack0xfffffffc;
do {
fVar8 = in_ST3;
fVar9 = in_ST6;
if (local_8 <= param_5) {
if (param_4 == '\0') {
local_30 = (int *)0x4ba92e;
iVar4 = _System__DynArrayHigh_qqrv(DAT_00624790);
local_30 = (int *)(iVar4 + 2);
local_34 = (int *)0x4ba947;
_System__DynArraySetLength_qqrv(&DAT_00624790,&DAT_004af590,1);
local_30 = (int *)0x4ba954;
iVar4 = _System__DynArrayHigh_qqrv(DAT_00624790);
local_30 = *(int **)((int)pdVar5 + 4);
local_34 = *(int **)pdVar5;
uStack_38 = 0x4ba960;
fVar7 = in_ST1;
in_ST1 = in_ST2;
in_ST2 = in_ST3;
in_ST3 = in_ST4;
in_ST4 = in_ST5;
in_ST5 = in_ST6;
in_ST6 = in_ST7;
FUN_004b5afc();
*pdVar5 = (double)in_ST0;
in_ST7 = in_ST6;
}
else {
iVar4 = 0;
fVar7 = in_ST0;
}
*(undefined4 *)(DAT_00624790 + iVar4 * 0x10) = *puVar6;
iVar1 = DAT_00624790;
*(undefined4 *)(DAT_00624790 + 8 + iVar4 * 0x10) = *(undefined4 *)pdVar5;
*(undefined4 *)(iVar1 + 0xc + iVar4 * 0x10) = *(undefined4 *)((int)pdVar5 + 4);
in_ST0 = fVar7;
fVar8 = in_ST3;
fVar9 = in_ST6;
if (0 < iVar4) {
if (*pdVar5 == 0.0) {
local_30 = (int *)0x4ba9a7;
in_ST7 = in_ST6;
FUN_004583b8(DAT_00624784,&stack0xffffffe8);
local_30 = (int *)0x4ba9b2;
(**(code **)(*unaff_EBX + 0x28))(unaff_EBX,&local_14);
local_30 = (int *)0x4ba9c2;
(**(code **)(*local_14 + 0x168))(local_14,*puVar6,&local_10);
local_30 = local_10;
local_34 = (int *)0x4ba9d0;
_System__VarFromBool_qqrr14System_Variantxo(&local_28,1);
piVar2 = local_30;
iVar4 = *local_30;
local_30 = (int *)0x4ba9dc;
(**(code **)(iVar4 + 0x164))(piVar2,&local_28);
in_ST0 = fVar7;
fVar8 = in_ST3;
fVar9 = in_ST6;
}
else {
local_30 = (int *)0x4ba9eb;
FUN_004583b8(DAT_00624784,&local_34);
local_30 = (int *)0x4ba9f6;
(**(code **)(*local_34 + 0x28))(local_34,&local_30);
piVar2 = local_30;
iVar4 = *local_30;
local_30 = (int *)0x4baa06;
(**(code **)(iVar4 + 0x168))(piVar2,*puVar6,&local_2c);
local_30 = local_2c;
in_ST0 = (float10)*pdVar5;
local_34 = (int *)0x4baa14;
fVar8 = in_ST2;
fVar9 = in_ST5;
_System__VarFromReal_qqrv(local_44);
piVar2 = local_30;
iVar4 = *local_30;
local_30 = (int *)0x4baa1d;
in_ST2 = in_ST1;
in_ST5 = in_ST4;
(**(code **)(iVar4 + 0x58))(piVar2,local_44);
in_ST1 = fVar7;
in_ST4 = in_ST3;
in_ST7 = in_ST6;
}
}
}
local_8 = local_8 + 1;
puVar6 = puVar6 + 1;
pdVar5 = pdVar5 + 1;
local_c = local_c + -1;
in_ST3 = fVar8;
in_ST6 = fVar9;
} while (local_c != 0);
}
puVar3 = local_24;
*in_FS_OFFSET = local_2c;
local_24 = &LAB_004baa84;
local_28 = (undefined1 *)0x4baa44;
_System__VarClr_qqrr14System_Variant(local_44,local_2c,puVar3);
local_28 = (undefined1 *)0x4baa4c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_34);
local_28 = (undefined1 *)0x4baa54;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_30);
local_28 = (undefined1 *)0x4baa5c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_2c);
local_28 = (undefined1 *)0x4baa64;
_System__VarClr_qqrr14System_Variant(&local_28);
local_28 = (undefined1 *)0x4baa6c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&stack0xffffffe8);
local_28 = (undefined1 *)0x4baa74;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_14);
local_28 = (undefined1 *)0x4baa7c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_10);
return;
}
@@ -0,0 +1,665 @@
## pc_foot.json ev_bb68320b29390b281486d459428a945fa4ee40a4bf2a3ed9e13a7e376d573168
void FUN_004b3f30(int param_1,byte param_2,undefined4 param_3,undefined1 param_4)
{
int iVar1;
int *piVar2;
undefined4 *puVar3;
int **ppiVar4;
char cVar5;
uint uVar6;
int iVar7;
undefined4 unaff_EBX;
int iVar8;
int *unaff_ESI;
int *unaff_EDI;
undefined4 *in_FS_OFFSET;
undefined1 uVar9;
undefined4 local_210;
undefined4 local_20c;
undefined4 local_208;
int *local_204;
undefined4 local_200;
undefined4 local_1fc;
undefined4 local_1f8;
int *local_1f4;
undefined4 local_1f0;
undefined4 local_1ec;
undefined4 local_1e8;
int *local_1e4;
undefined4 local_1e0;
int *local_1dc;
undefined4 local_1d8;
int *local_1d4;
undefined4 local_1d0;
int *local_1cc;
undefined4 local_1c8;
undefined4 local_1c4;
undefined4 local_1c0;
int *local_1bc;
undefined4 local_1b8;
undefined4 local_1b4;
undefined4 local_1b0;
int *local_1ac;
undefined4 local_1a8;
undefined4 local_1a4;
undefined4 local_1a0;
int *local_19c;
undefined1 local_198 [16];
int *local_188;
int *local_184;
undefined4 local_180;
undefined4 local_17c;
undefined4 local_178;
undefined4 local_174;
int *local_170;
int *local_16c;
undefined1 local_168 [16];
undefined1 local_158 [16];
undefined1 local_148 [16];
undefined1 local_138;
undefined1 local_137;
int *local_134;
undefined4 local_130;
undefined4 local_12c;
undefined4 local_128;
undefined4 local_124;
int *local_120;
int *local_11c;
int *local_118;
int local_114 [4];
undefined4 local_104;
undefined4 local_100;
int local_fc [4];
undefined4 local_ec;
undefined1 local_e8 [16];
int *local_d8;
int *local_d4;
int *local_d0;
undefined4 local_cc;
undefined4 local_c8;
int *local_c4;
int *local_c0;
int *local_bc;
undefined4 local_b8;
undefined4 local_b4;
int *local_b0;
int *local_ac;
int *local_a8;
undefined4 local_a4;
undefined4 uStack_a0;
int *piStack_9c;
undefined4 uStack_98;
int *local_94;
int *local_90;
undefined4 local_8c;
undefined4 uStack_88;
undefined4 uStack_84;
undefined4 uStack_80;
int *local_7c;
int *local_78;
int *local_74;
undefined4 local_70;
int *local_6c;
undefined4 local_68;
undefined4 uStack_64;
undefined4 uStack_60;
undefined4 uStack_5c;
int *local_58;
int *local_54;
int *local_50;
undefined *local_4c;
char *pcStack_48;
undefined4 *puStack_44;
int **ppiStack_40;
int *local_3c;
int *local_38;
int *local_34;
undefined *local_30;
int *piStack_2c;
undefined4 uStack_28;
undefined1 *puStack_24;
int *local_20;
undefined4 local_10;
undefined4 uStack_c;
int local_8;
local_20 = (int *)&stack0xfffffffc;
iVar7 = 0x41;
do {
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
LOCK();
UNLOCK();
uStack_c = (uint)param_2 << 0x18;
puStack_24 = &LAB_004b4bfc;
uStack_28 = *in_FS_OFFSET;
*in_FS_OFFSET = &uStack_28;
piStack_2c = (int *)0x4b3f67;
local_8 = param_1;
iVar7 = _System__DynArrayHigh_qqrv(DAT_00624790);
if (-1 < iVar7) {
iVar7 = iVar7 + 1;
iVar8 = 0;
do {
if (iVar8 == 0) {
if (0.0 < *(double *)(DAT_00624790 + 8)) {
piStack_2c = (int *)0x4b3fa1;
FUN_0045c580(DAT_00624784,&local_20);
piStack_2c = (int *)0x4b3fac;
(**(code **)(*local_20 + 0x28))(local_20,&stack0xffffffe4);
local_30 = (undefined *)0x4b3fc1;
piStack_2c = unaff_EDI;
_System__VarFromReal_qqrv(&local_30);
piVar2 = piStack_2c;
iVar1 = *piStack_2c;
piStack_2c = (int *)0x4b3fca;
(**(code **)(iVar1 + 0x58))(piVar2,&local_30);
}
}
else if (*(double *)(DAT_00624790 + 8 + iVar8 * 0x10) == 0.0) {
piStack_2c = (int *)0x4b3ff5;
FUN_004583b8(DAT_00624784,&local_3c);
piStack_2c = (int *)0x4b4000;
(**(code **)(*local_3c + 0x28))(local_3c,&local_38);
piStack_2c = (int *)0x4b401b;
(**(code **)(*local_38 + 0x168))
(local_38,*(undefined4 *)(DAT_00624790 + iVar8 * 0x10),&local_34);
piStack_2c = local_34;
local_30 = (undefined *)0x4b4029;
_System__VarFromBool_qqrr14System_Variantxo(&local_4c,1);
piVar2 = piStack_2c;
iVar1 = *piStack_2c;
piStack_2c = (int *)0x4b4035;
(**(code **)(iVar1 + 0x164))(piVar2,&local_4c);
}
else {
piStack_2c = (int *)0x4b4044;
FUN_004583b8(DAT_00624784,&local_58);
piStack_2c = (int *)0x4b404f;
(**(code **)(*local_58 + 0x28))(local_58,&local_54);
piStack_2c = (int *)0x4b406a;
(**(code **)(*local_54 + 0x168))
(local_54,*(undefined4 *)(DAT_00624790 + iVar8 * 0x10),&local_50);
piStack_2c = local_50;
local_30 = (undefined *)0x4b4084;
_System__VarFromReal_qqrv(&local_68);
piVar2 = piStack_2c;
iVar1 = *piStack_2c;
piStack_2c = (int *)0x4b408d;
(**(code **)(iVar1 + 0x58))(piVar2,&local_68);
}
iVar8 = iVar8 + 1;
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
}
piStack_2c = (int *)&DAT_004b4c1c;
local_30 = &DAT_004b4c44;
local_34 = (int *)0x4b40ac;
FUN_004584b0(DAT_00624784,&local_74);
local_34 = local_74;
local_38 = (int *)&DAT_004b4c44;
local_3c = (int *)0x4b40c1;
_System__WStrCatN_qqrv(&local_70,3);
local_3c = (int *)0x4b40cc;
_System__LStrFromWStr_qqrr17System_AnsiStringx17System_WideString(&local_6c,local_70);
local_3c = local_6c;
ppiStack_40 = (int **)0x4b40d5;
cVar5 = MPOS();
if (cVar5 == '\0') {
ppiStack_40 = (int **)0x4b40e6;
FUN_004583b8(DAT_00624784,&local_7c);
ppiStack_40 = (int **)0x4b40f1;
(**(code **)(*local_7c + 0x28))(local_7c,&local_78);
ppiStack_40 = (int **)0x4b40ff;
(**(code **)(*local_78 + 0x8c))(local_78,uStack_c >> 0x10 & 0xff);
}
uVar9 = *(char *)(*(int *)PTR_DAT_006120a4 + 0x175b) == '\0';
if (!(bool)uVar9) {
ppiStack_40 = &local_90;
puStack_44 = (undefined4 *)0x4b412a;
FUN_004583b8(DAT_00624784,&local_94);
puStack_44 = (undefined4 *)0x4b413f;
(**(code **)(*local_94 + 0x10))(local_94,2,1);
puStack_44 = (undefined4 *)0x4b4150;
(**(code **)(*local_90 + 0x18))(local_90,&local_8c);
puStack_44 = &local_8c;
pcStack_48 = (char *)0x4b416d;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString
(&local_a4,*(undefined4 *)(*(int *)PTR_DAT_006120a4 + 8));
puVar3 = puStack_44;
puStack_44 = (undefined4 *)0x4b4179;
_System__VarCmpEQ_qqrrx14System_Variantt1(puVar3,&local_a4);
if ((bool)uVar9) {
ppiStack_40 = &local_a8;
puStack_44 = (undefined4 *)0x4b4192;
FUN_004583b8(DAT_00624784,&local_ac);
puStack_44 = (undefined4 *)0x4b41a7;
(**(code **)(*local_ac + 0x10))(local_ac,2,1);
puStack_44 = (undefined4 *)0x4b41b7;
(**(code **)(*local_a8 + 0x8c))(local_a8,0);
}
}
ppiStack_40 = (int **)0x4b41c7;
FUN_00458494(DAT_00624784,&local_b0);
ppiStack_40 = (int **)0x4b41d7;
(**(code **)(*local_b0 + 0x80))(local_b0,1);
if (0 < local_8) {
ppiStack_40 = (int **)0x4b41ee;
FUN_004583cc(DAT_00624784,&stack0xffffffe8);
ppiStack_40 = (int **)0x4b41fe;
FUN_0045c580(DAT_00624784,&local_bc);
ppiStack_40 = (int **)0x4b420c;
uVar6 = (**(code **)(*local_bc + 0x118))();
ppiStack_40 = (int **)0x4b421e;
FUN_00452bc0((uVar6 & 0xffff) + 1,local_8,&local_b8);
ppiStack_40 = (int **)0x4b4234;
_System__LStrCat3_qqrv(&local_b4,&DAT_004b4c50,local_b8);
ppiStack_40 = (int **)local_b4;
puStack_44 = (undefined4 *)0x4b424b;
FUN_00458494(DAT_00624784,&local_c0);
ppiVar4 = ppiStack_40;
ppiStack_40 = (int **)0x4b425a;
(**(code **)(*local_c0 + 0xa4))(local_c0,ppiVar4);
ppiStack_40 = (int **)&DAT_004b4c1c;
puStack_44 = (undefined4 *)&DAT_004b4c44;
pcStack_48 = (char *)0x4b4274;
FUN_004584b0(DAT_00624784,&local_cc);
pcStack_48 = (char *)local_cc;
local_4c = &DAT_004b4c44;
local_50 = (int *)0x4b428f;
_System__WStrCatN_qqrv(&local_c8,3);
local_50 = (int *)0x4b42a0;
_System__LStrFromWStr_qqrr17System_AnsiStringx17System_WideString(&local_c4,local_c8);
local_50 = local_c4;
local_54 = (int *)0x4b42ac;
cVar5 = MPOS();
if (cVar5 == '\0') {
iVar7 = local_8 + 1;
local_54 = (int *)0x4b42d6;
FUN_004b39ac(iVar7,param_4,*(int *)(*(int *)PTR_DAT_006120a4 + 0x52ac) - 1U < 2);
if (*(int *)(*(int *)PTR_DAT_006120a4 + 0x52ac) == 2) {
local_54 = (int *)0x4b42f6;
FUN_004583b8(DAT_00624784,&local_d8);
local_54 = (int *)0x4b4307;
(**(code **)(*local_d8 + 0x2c))(local_d8,&local_d4);
local_54 = (int *)0x4b431d;
(**(code **)(*local_d4 + 0x168))(local_d4,iVar7,&local_d0);
local_54 = local_d0;
local_58 = (int *)0x4b4331;
_System__VarFromBool_qqrr14System_Variantxo(local_e8,1);
piVar2 = local_54;
iVar7 = *local_54;
local_54 = (int *)0x4b4340;
(**(code **)(iVar7 + 0x164))(piVar2,local_e8);
}
}
local_54 = (int *)0x4b434b;
(**(code **)(*unaff_ESI + 0xd4))();
}
ppiStack_40 = (int **)&DAT_004b4c5c;
puStack_44 = (undefined4 *)0x4b4366;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_ec,*(int *)PTR_DAT_006120a4 + 0x28);
puStack_44 = (undefined4 *)local_ec;
pcStack_48 = ",\"&9 ";
local_4c = (undefined *)0x4b437e;
_System__LStrCatN_qqrv(&stack0xffffffec,3);
local_4c = (undefined *)0x4b4397;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_104,*(int *)PTR_DAT_006120a4 + 0x509a);
local_4c = (undefined *)0x4b43ab;
_System__LStrCat3_qqrv(&local_100,unaff_EBX,local_104);
local_4c = (undefined *)0x4b43bc;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_fc,local_100);
local_4c = (undefined *)local_fc;
local_50 = (int *)0x4b43d0;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_124,0);
local_50 = local_118;
local_54 = local_11c;
local_58 = local_120;
uStack_5c = local_124;
local_137 = 0x20;
local_138 = 1;
uStack_60 = 0x4b4408;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_(&local_134,&local_138);
uStack_60 = local_128;
uStack_64 = local_12c;
local_68 = local_130;
local_6c = local_134;
local_70 = CONCAT31((int3)((uint)*(int *)PTR_DAT_006120a4 >> 8),
*(char *)(*(int *)PTR_DAT_006120a4 + 0x509a) == '\x01');
local_74 = local_114;
local_78 = (int *)0x4b443e;
IIF();
piVar2 = local_74;
local_74 = (int *)0x4b444a;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(piVar2,local_114);
local_74 = local_fc;
local_78 = (int *)0x4b446a;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(local_148,*(int *)PTR_DAT_006120a4 + 0x52c0);
piVar2 = local_74;
local_74 = (int *)0x4b4476;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(piVar2,local_148);
local_74 = local_fc;
local_78 = (int *)0x4b448d;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_158,&DAT_004b4c78);
piVar2 = local_74;
local_74 = (int *)0x4b4499;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(piVar2,local_158);
local_74 = local_fc;
local_78 = (int *)0x4b44ad;
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(&local_178,0);
local_78 = local_16c;
local_7c = local_170;
uStack_80 = local_174;
uStack_84 = local_178;
local_137 = 0x20;
local_138 = 1;
uStack_88 = 0x4b44e5;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_(&local_188,&local_138);
uStack_88 = local_17c;
local_8c = local_180;
local_90 = local_184;
local_94 = local_188;
uStack_98 = CONCAT31((int3)((uint)*(int *)PTR_DAT_006120a4 >> 8),
*(char *)(*(int *)PTR_DAT_006120a4 + 0x519a) == '\x01');
piStack_9c = (int *)local_168;
uStack_a0 = 0x4b451b;
IIF();
piVar2 = piStack_9c;
piStack_9c = (int *)0x4b4527;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(piVar2,local_168);
piStack_9c = local_fc;
uStack_a0 = 0x4b4547;
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
(local_198,*(int *)PTR_DAT_006120a4 + 0x519a);
piVar2 = piStack_9c;
piStack_9c = (int *)0x4b4553;
_System__VarAdd_qqrr14System_Variantrx14System_Variant(piVar2,local_198);
piStack_9c = (int *)0x4b4561;
_System__VarToLStr_qqrr17System_AnsiStringrx14System_Variant(&local_10,local_fc);
if (*(short *)(*(int *)PTR_DAT_006120a4 + 0x174e) != 1) {
piStack_9c = (int *)0x4b4588;
FUN_004ba17c(0xb,(int)*(short *)(*(int *)PTR_DAT_006120a4 + 0x174e));
}
if ((uStack_c._3_1_ != '\0') && ('\x01' < *(char *)(*(int *)PTR_DAT_006120a4 + 0x1788))) {
piStack_9c = (int *)0x2;
uStack_a0 = 3;
if ((*(char *)(*(int *)PTR_DAT_006120a4 + 0x529a) == '\x03') ||
(*(char *)(*(int *)PTR_DAT_006120a4 + 0x529b) == '\x03')) {
local_a4 = 0;
}
else {
local_a4 = CONCAT31((int3)((uint)*(int *)PTR_DAT_006120a4 >> 8),1);
}
local_a8 = (int *)0x4b45d6;
local_a8 = (int *)IFI();
local_ac = (int *)0x1;
if ((*(char *)(*(int *)PTR_DAT_006120a4 + 0x529a) == '\x01') ||
(*(char *)(*(int *)PTR_DAT_006120a4 + 0x529b) == '\x01')) {
local_b0 = (int *)0x0;
}
else {
local_b0 = (int *)CONCAT31((int3)((uint)*(int *)PTR_DAT_006120a4 >> 8),1);
}
local_b4 = 0x4b4605;
iVar7 = IFI();
if (iVar7 == 1) {
piStack_9c = (int *)0x4b4627;
FUN_00458494(DAT_00624784,&local_19c);
piStack_9c = local_19c;
uStack_a0 = 0x4b4639;
FUN_004a7ef0(&local_1a8);
uStack_a0 = 0x4b464d;
_System__LStrCat3_qqrv(&local_1a4,unaff_EBX,local_1a8);
uStack_a0 = 0x4b465e;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1a0,local_1a4);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b466d;
(**(code **)(iVar7 + 0x98))(piVar2,local_1a0);
}
else if (iVar7 == 2) {
piStack_9c = (int *)0x4b4682;
FUN_00458494(DAT_00624784,&local_1ac);
piStack_9c = local_1ac;
uStack_a0 = 0x4b4694;
FUN_004a7ef0(&local_1b8);
uStack_a0 = 0x4b46a8;
_System__LStrCat3_qqrv(&local_1b4,unaff_EBX,local_1b8);
uStack_a0 = 0x4b46b9;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1b0,local_1b4);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b46c5;
(**(code **)(iVar7 + 0x78))(piVar2,local_1b0);
}
else if (iVar7 == 3) {
piStack_9c = (int *)0x4b46d7;
FUN_00458494(DAT_00624784,&local_1bc);
piStack_9c = local_1bc;
uStack_a0 = 0x4b46e9;
FUN_004a7ef0(&local_1c8);
uStack_a0 = 0x4b46fd;
_System__LStrCat3_qqrv(&local_1c4,unaff_EBX,local_1c8);
uStack_a0 = 0x4b470e;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1c0,local_1c4);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b471d;
(**(code **)(iVar7 + 0xb8))(piVar2,local_1c0);
}
}
cVar5 = *(char *)(*(int *)PTR_DAT_006120a4 + 0x529a);
if (cVar5 == '\x01') {
piStack_9c = (int *)0x4b474b;
FUN_00458494(DAT_00624784,&local_1cc);
piStack_9c = local_1cc;
uStack_a0 = 0x4b4760;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1d0,local_10);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b476f;
(**(code **)(iVar7 + 0x98))(piVar2,local_1d0);
}
else if (cVar5 == '\x02') {
piStack_9c = (int *)0x4b4781;
FUN_00458494(DAT_00624784,&local_1d4);
piStack_9c = local_1d4;
uStack_a0 = 0x4b4796;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1d8,local_10);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b47a2;
(**(code **)(iVar7 + 0x78))(piVar2,local_1d8);
}
else if (cVar5 == '\x03') {
piStack_9c = (int *)0x4b47b4;
FUN_00458494(DAT_00624784,&local_1dc);
piStack_9c = local_1dc;
uStack_a0 = 0x4b47c9;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1e0,local_10);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b47d8;
(**(code **)(iVar7 + 0xb8))(piVar2,local_1e0);
}
cVar5 = *(char *)(*(int *)PTR_DAT_006120a4 + 0x529b);
if (cVar5 == '\x01') {
piStack_9c = (int *)0x4b480a;
FUN_00458494(DAT_00624784,&local_1e4);
piStack_9c = local_1e4;
uStack_a0 = 0x4b482a;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_1f0,*(int *)PTR_DAT_006120a4 + 0x628);
uStack_a0 = 0x4b483e;
_System__LStrCat3_qqrv(&local_1ec,unaff_EBX,local_1f0);
uStack_a0 = 0x4b484f;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1e8,local_1ec);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b485e;
(**(code **)(iVar7 + 0x98))(piVar2,local_1e8);
}
else if (cVar5 == '\x02') {
piStack_9c = (int *)0x4b4873;
FUN_00458494(DAT_00624784,&local_1f4);
piStack_9c = local_1f4;
uStack_a0 = 0x4b4893;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_200,*(int *)PTR_DAT_006120a4 + 0x628);
uStack_a0 = 0x4b48a7;
_System__LStrCat3_qqrv(&local_1fc,unaff_EBX,local_200);
uStack_a0 = 0x4b48b8;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_1f8,local_1fc);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b48c4;
(**(code **)(iVar7 + 0x78))(piVar2,local_1f8);
}
else if (cVar5 == '\x03') {
piStack_9c = (int *)0x4b48d6;
FUN_00458494(DAT_00624784,&local_204);
piStack_9c = local_204;
uStack_a0 = 0x4b48f6;
_System__LStrFromString_qqrr17System_AnsiStringrx28System__SmallString_iuc_255_
(&local_210,*(int *)PTR_DAT_006120a4 + 0x628);
uStack_a0 = 0x4b490a;
_System__LStrCat3_qqrv(&local_20c,unaff_EBX,local_210);
uStack_a0 = 0x4b491b;
_System__WStrFromLStr_qqrr17System_WideStringx17System_AnsiString(&local_208,local_20c);
piVar2 = piStack_9c;
iVar7 = *piStack_9c;
piStack_9c = (int *)0x4b492a;
(**(code **)(iVar7 + 0xb8))(piVar2,local_208);
}
piVar2 = local_90;
*in_FS_OFFSET = uStack_98;
local_90 = (int *)&LAB_004b4c06;
local_94 = (int *)0x4b4947;
_System__LStrArrayClr_qqrpvi(&local_210,2,piVar2);
local_94 = (int *)0x4b4952;
_System__WStrClr_qqrpv(&local_208);
local_94 = (int *)0x4b495d;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_204);
local_94 = (int *)0x4b496d;
_System__LStrArrayClr_qqrpvi(&local_200,2);
local_94 = (int *)0x4b4978;
_System__WStrClr_qqrpv(&local_1f8);
local_94 = (int *)0x4b4983;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1f4);
local_94 = (int *)0x4b4993;
_System__LStrArrayClr_qqrpvi(&local_1f0,2);
local_94 = (int *)0x4b499e;
_System__WStrClr_qqrpv(&local_1e8);
local_94 = (int *)0x4b49a9;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1e4);
local_94 = (int *)0x4b49b4;
_System__WStrClr_qqrpv(&local_1e0);
local_94 = (int *)0x4b49bf;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1dc);
local_94 = (int *)0x4b49ca;
_System__WStrClr_qqrpv(&local_1d8);
local_94 = (int *)0x4b49d5;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1d4);
local_94 = (int *)0x4b49e0;
_System__WStrClr_qqrpv(&local_1d0);
local_94 = (int *)0x4b49eb;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1cc);
local_94 = (int *)0x4b49fb;
_System__LStrArrayClr_qqrpvi(&local_1c8,2);
local_94 = (int *)0x4b4a06;
_System__WStrClr_qqrpv(&local_1c0);
local_94 = (int *)0x4b4a11;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1bc);
local_94 = (int *)0x4b4a21;
_System__LStrArrayClr_qqrpvi(&local_1b8,2);
local_94 = (int *)0x4b4a2c;
_System__WStrClr_qqrpv(&local_1b0);
local_94 = (int *)0x4b4a37;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_1ac);
local_94 = (int *)0x4b4a47;
_System__LStrArrayClr_qqrpvi(&local_1a8,2);
local_94 = (int *)0x4b4a52;
_System__WStrClr_qqrpv(&local_1a0);
local_94 = (int *)0x4b4a5d;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_19c);
local_94 = (int *)0x4b4a73;
_System__FinalizeArray_qqrpvt1ui(local_198,__xp_14System_Variant_exref,6);
local_94 = (int *)0x4b4a89;
_System__FinalizeArray_qqrpvt1ui(&local_134,__xp_14System_Variant_exref,3);
local_94 = (int *)0x4b4a99;
_System__LStrArrayClr_qqrpvi(&local_104,2);
local_94 = (int *)0x4b4aa4;
_System__VarClr_qqrr14System_Variant(local_fc);
local_94 = (int *)0x4b4aaf;
_System__LStrClr_qqrpv(&local_ec);
local_94 = (int *)0x4b4aba;
_System__VarClr_qqrr14System_Variant(local_e8);
local_94 = (int *)0x4b4ac5;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_d8);
local_94 = (int *)0x4b4ad0;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_d4);
local_94 = (int *)0x4b4adb;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_d0);
local_94 = (int *)0x4b4aeb;
_System__WStrArrayClr_qqrpvi(&local_cc,2);
local_94 = (int *)0x4b4af6;
_System__LStrClr_qqrpv(&local_c4);
local_94 = (int *)0x4b4b01;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_c0);
local_94 = (int *)0x4b4b0c;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_bc);
local_94 = (int *)0x4b4b1c;
_System__LStrArrayClr_qqrpvi(&local_b8,2);
local_94 = (int *)0x4b4b27;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_b0);
local_94 = (int *)0x4b4b3d;
_System__FinalizeArray_qqrpvt1ui(&local_ac,&DAT_00450638,2);
local_94 = (int *)0x4b4b48;
_System__VarClr_qqrr14System_Variant(&local_a4);
local_94 = (int *)0x4b4b5e;
_System__FinalizeArray_qqrpvt1ui(&local_94,&DAT_00450638,2);
local_94 = (int *)0x4b4b69;
_System__VarClr_qqrr14System_Variant(&local_8c);
local_94 = (int *)0x4b4b71;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_7c);
local_94 = (int *)0x4b4b79;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_78);
local_94 = (int *)0x4b4b86;
_System__WStrArrayClr_qqrpvi(&local_74,2);
local_94 = (int *)0x4b4b8e;
_System__LStrClr_qqrpv(&local_6c);
local_94 = (int *)0x4b4b96;
_System__VarClr_qqrr14System_Variant(&local_68);
local_94 = (int *)0x4b4b9e;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_58);
local_94 = (int *)0x4b4ba6;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_54);
local_94 = (int *)0x4b4bae;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_50);
local_94 = (int *)0x4b4bb6;
_System__VarClr_qqrr14System_Variant(&local_4c);
local_94 = (int *)0x4b4bbe;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_3c);
local_94 = (int *)0x4b4bc6;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_38);
local_94 = (int *)0x4b4bce;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_34);
local_94 = (int *)0x4b4bd6;
_System__VarClr_qqrr14System_Variant(&local_30);
local_94 = (int *)0x4b4bde;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&local_20);
local_94 = (int *)0x4b4be6;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&stack0xffffffe4);
local_94 = (int *)0x4b4bee;
_System__IntfClear_qqrr45System__DelphiInterface_t17System_IInterface_(&stack0xffffffe8);
local_94 = (int *)0x4b4bfb;
_System__LStrArrayClr_qqrpvi(&stack0xffffffec,2);
return;
}
+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"] == ["검사 대상 아님"]
+5 -3
View File
@@ -131,8 +131,8 @@ def _forms(name, opts):
def test_forms_without_original_sample_agree_with_engine_totals():
"""견본 없는 양식(부분) — 분할 금회 = BOQ 2칸(봉화 0) · 총괄집계표 끝 = 총공사비 100% · 간이명세서 계 = 도급분(회사분 0) ·
구.시도 시기금+구기금 = 합계 · 공종별 재료비 집계 줄 금액 = 수량 × 단가 사사오입(열 = TPM_NAE_COL_ML)."""
f = _forms("봉화2024", {"fundRate": 60})
구.시도 시기금(1칸)+구기금(2칸) = 합계 · 공종별 재료비 집계 줄 금액 = 수량 × 단가 사사오입(열 = TPM_NAE_COL_ML)."""
f = _forms("봉화2024", {})
sp = [r for r in f["분할내역서"]["rows"] if r.get("_k") == "final"][0]
assert sp["H"] > 0 and sp["I"] == 0
total = [r for r in f["총괄집계표"]["rows"] if r.get("_k") == "cost"]
@@ -140,7 +140,9 @@ def test_forms_without_original_sample_agree_with_engine_totals():
simple = [r for r in f["간이명세서"]["rows"] if r.get("_k") == "cost"]
assert simple[-1]["B"] == "계" and simple[-1]["J"] == simple[1]["J"] > 0
fund = [r for r in f["설계내역서구시도"]["rows"] if r.get("_k") == "item"]
assert fund and all(r["E"] + r["F"] == r["G"] for r in fund)
assert fund and all(
r["E"] + r["F"] == r["G"] and r["F"] == 0 for r in fund
) # 2칸 없음 → 구기금 0
mat = [r for r in f["재료비집계표"]["rows"] if r.get("_k") == "item"]
assert mat and all(r["H"] == int(r["E"] * r["G"] + 0.5) for r in mat if r["G"] >= 0)
@@ -98,6 +98,27 @@ def test_split_0605_takes_slot1_and_slot2_columns(name):
assert fin["I"] == 0 and all(r["E"] == 0 and r["I"] == 0 for r in items)
def test_fund_0651_takes_slot1_and_slot2_group_amounts():
"""0651 구.시도(Prn_Nae_Ex1_CT_EXL 0x59e818 · PRT.DBF T_AMT1·T_AMT2) — 공종 줄 시기금·구기금 = BOQ 저장 1·2칸 금액 ·
합계 = 둘 더하기(영덕 변경 · 2칸 있음)."""
from test_stmate_report_sheets import DOCS, PAIRS, server
f = _forms("영덕변경", {})
rows = [r for r in f["총괄내역서구시도"]["rows"] if str(r.get("_k", "")).startswith("T")]
load = server.api_load(server.LoadReq(source_path=str(DOCS / PAIRS["영덕변경"][0])))
raw = sorted(load["boq_rows"], key=lambda r: float(r.get("SORTCODE") or 0))
raw = [r for r in raw if str(r.get("BDCODE1") or "").strip()[:1] == "T"]
assert len(rows) == len(raw) > 5
assert [(r["D"], r["E"]) for r in rows] == [
(float(x["T_AMT1"]), float(x["T_AMT2"])) for x in raw
]
assert all(r["F"] == r["D"] + r["E"] for r in rows)
head = f["총괄내역서구시도"]["rows"][2]
assert (
all(head.get(c) for c in "DEF") and "".join(head["D"].split()) == "시기금"
) # SET_REP FLD_N
@pytest.mark.parametrize("name", NAMES)
def test_cost_statement_simple_0695_rows(name):
"""0695 간이공사비 산출명세서(ST_P_XLS Prn_Boq_Not 0x55f168) — B 회사분(0)·도급분·계 × C~J 8칸 ·
+34 -34
View File
@@ -29,9 +29,9 @@
## 진행률
- 합계: 전체 246 · 구현 214 · 부분 30 · 없음 2 → 진행률 93.1%((214 + 30×0.5) / 246) · 구현만 세면 87.0%
- 합계: 전체 246 · 구현 226 · 부분 19 · 없음 1 → 진행률 95.7%((226 + 19×0.5) / 246) · 구현만 세면 91.9%
### G1 화면·메뉴 (구현 49 · 부분 4 · 없음 1) — 94.4%
### G1 화면·메뉴 (구현 51 · 부분 2 · 없음 1) — 96.3%
- [x] F1-01 메인 메뉴·툴바·하단 금액 집계줄 — STmate.Cpm 메인 · 현재: 구현(원본 메뉴 구조·툴바 차례·단축키 12·체크 항목·최근 폴더(test_stmate_ui))
- [x] F1-02 공사목록표 목록·선택·불러오기 — wPrjList · 현재: 구현(공사목록표 · 다른 내역서 열기(저장 직접비 1원 일치))
@@ -68,7 +68,7 @@
- [x] F1-33 대가표 목록·선택(B/D/X) — wM_iLWi_San · 현재: 구현(view_dan_ilwi 236~)
- [x] F1-34 일위대가 구성행 표 편집·노임계수·저장비목 선택 — wM_Edit_iLWi · 현재: 구현(구성행 편집 · 저장 = BDQTY 바뀐 호표만 암호로 다시 씀(stc_save_extra))
- [x] F1-35 단가산출근거 편집 + 계산(F9) — wM_Edit_San · 현재: 구현(산근 편집 + F9 · 함수·문법 검사(test_stmate_smt_lang))
- [ ] F1-36 손료 계산(F6)·시간당 손료계수 수정 — wM_Edit_San · wM_Edit_XRate · 현재: 부분(손료계수(수량 = 계 × 10⁻⁴ 정수 확인) · calc_xrate · 반올림 방향 미확정)
- [x] F1-36 손료 계산(F6)·시간당 손료계수 수정 — wM_Edit_San · wM_Edit_XRate · 현재: 구현(REA 36 — 손료 계수 반올림 = MROUNDUD 선택 1(첫 버림 자리 ≥5 올림 · DP_Common 0x4544f0) · calc_xrate 원형 사용(test_stmate_xrate_round))
- [x] F1-37 사용자 단가산출식 편집 — wM_Edit_USER · 현재: 구현(사용자문자 편집 목록)
- [ ] F1-38 실적단가 → 일식단가 변환등록 — wM_Conv_A2W · 현재: 부분(calc_a2w 실적→일식 · 7건 실적단가 자료 없음)
- [ ] F1-39 호환규정코드 찾기·입력 — wM_JDCode · 현재: 부분(조달청 코드 목록 암호 파일 · 다른 프로젝트 값 후보)
@@ -86,14 +86,14 @@
- [x] F1-51 인쇄 메뉴 옵션(글꼴·코드필드·수량위치·양식·방향) — PM_Prt · 현재: 구현(인쇄 옵션 바꾸면 결과물 바뀜(test_stmate_report_link))
- [x] F1-52 보고서 인쇄순서·인쇄 공종 집계수준 선택 — PM_Prn_Ord · PM_Sel_St · 현재: 구현(인쇄순서로 원본 3건 시트 차례 재현)
- [x] F1-53 인쇄영역 선택(당초/변경/분할·레벨·변경 1~8차) — wM_Sel_Prn · 현재: 구현(인쇄영역 당초/변경/분할·레벨·차수 반영)
- [ ] F1-54 특수문자·그림코드·메모 입력 — mMinMsg_ · wInDlgImg · wInDlgMemo · 현재: 부분(REA 35 — 그림 = I 코드 행 IFORM · 형식 = SIZE · 특수문자·메모·그림코드 넣기)
- [x] F1-54 특수문자·그림코드·메모 입력 — mMinMsg_ · wInDlgImg · wInDlgMemo · 현재: 구현(REA 37 — 그림 = COSTN I 코드 IFORM · SIZE = 그림 클래스 이름 대문자 · NAME 빈칸 = 파일 이름 · 넣기·보기·받기·비트맵→JPEG)
### G2 계산 엔진 (구현 58 · 부분 3 · 없음 0) — 97.5%
### G2 계산 엔진 (구현 59 · 부분 2 · 없음 0) — 98.4%
- [x] F2-01 노임 일→시간 환산식 좌→우 순차 — 18번 §2.1 · Start8x RXXNM · 현재: 구현(calc.js 84)
- [x] F2-02 노임 환산 갈래 H0~H5(터널·준설선) — wM_Set_Sys cmBx_Sel_RX · 30번 §4 · 현재: 구현(REA 34 Main 0x43894c — COSTN.RXX 1·10~14 = 식 하나로 모든 L 행 · 0·2~9 = 목록 첫 일치 · 화면 순번↔값 0x4fcae8(test_labor_branch_by_rxx) · H 글자 짝 미확인)
- [x] F2-03 환산 적용 직종(COND_) — 20번 §2.5 · 현재: 구현(중기 구성 운전원 = Start8x.Ini CONLD 직종 · RXXNM 좌→우 환산)
- [ ] F2-04 환율 적용(USD 구간·EUR·YEN·적용 범위) — wM_Set_Sys cmBX_EXR · 현재: 부분(calc_xrate 고액 환율·€·100¥·당초/변경 시점 · REA 34 EXRNM = S 코드 외화 행 천원 환산 스위치(0x437aa2) 판독 · 두 환산 경로 금액 같음 미확인)
- [ ] F2-04 환율 적용(USD 구간·EUR·YEN·적용 범위) — wM_Set_Sys cmBX_EXR · 현재: 부분(REA 36 — EXRNM 참 = S 줄 MROUNDUD(단가×율/1000, ECD)·천원(0x437aa2) 반영 · 거짓 = 상위 B·천원 줄 수량 칸 = 율(0x435600) → 두 경로 ECD 버림만큼 다름 · 거짓 경로 비교 문자열·0x438130 금액식 미확인)
- [x] F2-05 소수 자리수 설정(KCD·ACD·ZCD·JCD·ECD·BPN) — 22번 §3.4 · 현재: 구현(KCD·BPN·ACD·JCD·ECD 각 계산 연결 · REA 34 JCD 빈칸 기본 = KCD 2 이면 2(Main 0x42ab08) · JCD = 중기 노임 환산 수량 버림 자리)
- [x] F2-06 자재 후보 최저가 자동채택 — 17번 §5.5 · 현재: 구현(최저가 채택 · 실무 7건 변동 0(test_material_candidate_minimum_matches_stored))
- [x] F2-07 수동 고정·보호표시 우선 — 22번 §3.1 · 13번 T10 · 현재: 구현(보호표시(UC=T) 우선)
@@ -113,7 +113,7 @@
- [x] F2-21 관급자재·조달수수료 분리, 관급 천원 올림 — 16번 §4.3·§4.7 · 현재: 구현(관급·조달수수료 · 코드 붙은 % 줄 = 같은 상위 공종 앞 줄 합 × 율 계산·저장 재계산(test_stmate_file_pct · kanjub_stc))
- [x] F2-22 요율표 규모·기간 구간 조회 — 12번 §8~10 · 06번 §2 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts))
- [x] F2-23 요율 기본값 처리 — calc.js · 현재: 구현(num 기본값 · 4건 시험)
- [ ] F2-24 공사종류·적용기준(행자부 RateM 포함)·공사기간 축 — 12번 §10.1 · 현재: 부분(공사종류·기간 축 요율 조회 7건 재현 · REA 34 §5.2·§17.5 행자부 = RATE_M 조회 · 문턱 직접공사비 50억·300억 확인 · 콤보 정수값 짝 미확인 · 조회 미연결)
- [ ] F2-24 공사종류·적용기준(행자부 RateM 포함)·공사기간 축 — 12번 §10.1 · 현재: 부분(REA 36 — 적용기준 국가 2·지방 0·행자부 1(DFM Values) · 행자부 RATE_M 조회(0x47a1bc) 화면 연결 · 적용기준 바꾸면 다시 조회(test_stmate_std_market) · RATE_R 일반관리비·이윤 줄(원본 21줄 고정 판독)과 앱 규모 묶음 머리 줄 차이 미정리)
- [x] F2-25 간접노무비(직노×율) — 12번 §3 · 현재: 구현(calc.js 385, 요율은 저장값)
- [x] F2-26 산재·건강·연금보험료 — 12번 §3 · 현재: 구현(calc.js 387~391)
- [x] F2-27 고용보험료(등급 7) — 12번 §8 rGrd_Rate_Kobo · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts))
@@ -150,7 +150,7 @@
- [x] F2-58 항목별 밑수(D_)·결과(S_)·직접입력(C_) 키 왕복 — 25번 §1.1 · 현재: 구현(저장 설정 → 계산 설정 → 다시 저장 원본 그대로(test_kanjub_smt_round_trip))
- [x] F2-59 요율 순환(무한루프) 경고·수동 확정 — 06번 §2 · 현재: 구현(요율 순환 시 멈춤·구간 단추·수동 확정·확정 풀기(06번 §2 · test_stmate_kanjub_rate))
- [x] F2-60 연쇄 재계산(L/M/S→X→D→B→내역→원가) — 08번 §1 · 현재: 구현(기초단가부터 원설계 5건 전 단가·총공사비 1원 · 변경설계 일부 미대조)
- [ ] F2-61 표준시장단가 적용(ACTTYP·ACTOPT 노무비 끝전 보정) — 22번 §3.3 · 현재: 부분(REA 34 Main 0x45a468 나눔·OPTIMIZ 끝전 = calc.splitStdMarket(test_std_market_split_modes) · 내역 계산 연결 없음)
- [x] F2-61 표준시장단가 적용(ACTTYP·ACTOPT 노무비 끝전 보정) — 22번 §3.3 · 현재: 구현(REA 36 — A 코드 = COSTA · S_JDA 참 = 저장 단가 · 거짓 = AAMTn 노무비율 나눔(0x430c60→0x45a468) · ACTTYP·ACTOPT = PRJLST(0x45c938) · calcBoq·costnLookup·api_load 연결(test_stmate_std_market) · 원가계산서 밑수 자리·구성 A 칸·계열 5 미확인 · 실물 A 코드 0건)
### G3 수량산출·식언어 (구현 28 · 부분 1 · 없음 0) — 98.3%
@@ -184,7 +184,7 @@
- [x] F3-28 내역↔BDQTY 수량 연결(CON_QTY) — ST_U_ConBD · 현재: 구현(코드 종류별 수량 · 내역↔BDQTY 자원 집계(test_qty_by_code_and_rollup_on_real_boq))
- [x] F3-29 수량코드(QCODE) 등록·검사 — 28번 §4 · 현재: 구현(수량코드 검사(test_qcode_check_and_next_code_and_file_signature))
### G4 파일 입출력 (구현 26 · 부분 3 · 없음 1) — 91.7%
### G4 파일 입출력 (구현 29 · 부분 1 · 없음 0) — 98.3%
- [x] F4-01 STC(ZIP) 열기 — ST_U_Archive · 09번 §5 · 현재: 구현(server.py 92)
- [x] F4-02 STC 저장(압축) — ST_U_Archive ComP_Data · 현재: 구현(stc_archive · 같은 파일은 원본 바이트 · 덮기 전 백업 · 7건 왕복 바이트 동일)
@@ -208,26 +208,26 @@
- [x] F4-20 조달청 호환규정 XML 내보내기 — 30번 · uM_XML_Info · 현재: 구현(report_pps · 공식 XSD V1.0.5 검증 5건 · 총공사비·직접비 저장값 1원(test_stmate_report_pps))
- [x] F4-21 조달청 XML·조달 형식 가져오기(Conv_XML_ST8·Conv_Jodal_ST8) — 28번 §3 · 현재: 구현(conv_xml · 5건 내보내기 → 가져오기 왕복 말단 행·차수 직접비·총공사비 일치(test_stmate_conv_xml) · 옛 조달 형식 근거 없음)
- [x] F4-22 XML 변환 설정(공사유형 8·지역·건축 사업내용) — uM_XML_Info · uM_ConstType · 현재: 구현(conv_xml_cfg 공사유형·지역·건축 사업내용 XSD 에서 읽음 · XSD 검증)
- [ ] F4-23 JDL 내보내기·검사 — frm_JDLAnno · JDLCHK.*.dll · 현재: 부분(REA 34 §17.9 — jdl_format.py: 단가 목록 8종 고정폭 자리·열 이름·열 개수·코드 글자 검사(test_stmate_jdl_rea) · 세부 3종 열 이름 조건부 · 묶음 내보내기 없음)
- [ ] F4-23 JDL 내보내기·검사 — frm_JDLAnno · JDLCHK.*.dll · 현재: 부분(REA 37 — JDL 줄 = 탭 구분 + x05·x07 덧붙임(검사기 0x504d20 · 34 §17.9 고정폭 판독 바로잡음) · 단가 목록 7종·Main·GongJong 머리·Global.Ini 상수 키 생성·검사·zip 받기 · MainPart·UnitPart·JPart·CostAccount 본문·.JDL 압축 미확인)
- [x] F4-24 엑셀 → 내역 불러오기 — wM_From_XLS · 현재: 구현(conv_xls_boq · 원본 엑셀 5권 → STC 내역 행 전 칸 일치(test_stmate_conv_xls))
- [ ] F4-25 엑셀 역등록(CONV_XLS_2_ST·INITIAL)·엑셀 → BDQTY — 24번 §3 · 현재: 부분(단가 목록·산출식·구성표 코드·수량 일치 · 3건 새 공사 일치 · 중기 구성 PRPT·PRIN 뜻·이름 칸 미확정)
- [x] F4-25 엑셀 역등록(CONV_XLS_2_ST·INITIAL)·엑셀 → BDQTY — 24번 §3 · 현재: 구현(REA 37 — ST_P_XLS 0x5f1078 PRPT「속성」·PRIN「대상」·PROUT「저장」 = PR/RR 줄만 · 원본 BDQTY 대조 4건 일치)
- [x] F4-30 BDQTY.DBF 구성표 복호 읽기 — STC_난독화_상태 · 현재: 구현(bdqty.py 자리별 회전·더하기 표 283자리 · 사용자 승인 · 글자 칸 제외)
- [ ] F4-26 자재 기준자료 XLS 입출력 — wM_JajeXLS · 현재: 부분(자재 기준자료 엑셀 왕복 · 원본 화면·방향 미확인)
- [x] F4-26 자재 기준자료 XLS 입출력 — wM_JajeXLS · 현재: 구현(REA 37 — 원본 = 재료비 수량집계표 엑셀 내보내기만(TWM_JAJEXLS) · 주요건설자재현황 시트 · 웹 들여오기는 원본에 없음 · 파일 이름 기본값 미확인)
- [x] F4-27 기준 BOQ·코드 변경 엑셀 왕복 — 24번 §3 · ST_U_ChgCode · 현재: 구현(stc_codechg 내역 8표 엑셀 왕복 · 코드 변경 되돌리면 7건 원래 바이트)
- [ ] F4-28 구버전 → Win8 자료 변환 — ST_U_Convert ST_ConvToWin8 · 현재: 없음(REA 34 §13·§17.10 ST_ConvToWin8 갈래·차례·BOQ 필드 바꿈 판독 · 구버전 자료 표본 없음 · 미구현)
- [x] F4-28 구버전 → Win8 자료 변환 — ST_U_Convert ST_ConvToWin8 · 현재: 구현(REA 37 — 판 가리기(Chk_Data 0x459280) · 7.x/DOS COSTN·BDQTY·PRJLST·KONGJONG·BOQ·Start8x.Ini 대응 · B→X 조건 = 단위 X · 합성 자료 시험 · 간접비 이관·RATE·SYSINFO·IFORM 미확인(틀 유지))
- [x] F4-29 자동백업·자료 복원 — wM_D_Restore · wM_ST_Restore · 현재: 구현(api_file 자동 백업·복원)
### G5 보고서·내보내기 (구현 23 · 부분 13 · 없음 0) — 81.9%
### G5 보고서·내보내기 (구현 25 · 부분 11 · 없음 0) — 84.7%
- [x] F5-01 재료비·노무비·경비 목록표(0101~0103) — Prn_SanMok · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [x] F5-02 일식·견적(W코드) 목록표(0104) — Prn_SanMok · 현재: 구현(일식견적 목록 0104 · 울진 변경1차 당초 차수 셀 일치)
- [x] F5-03 자재단가대비표(0105) — Prn_Col_Dan · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [ ] F5-04 표준시장·실적단가 목록표(0106·0206) — Prn_SanMok · 현재: 부분(REA 35 — 0106 = 0104 갈래 확인 · 0206 근거 없음 · 원본 견본 없음)
- [ ] F5-04 표준시장·실적단가 목록표(0106·0206) — Prn_SanMok · 현재: 부분(REA 38 — 0206 엑셀판 = Prn_AList_EXL 0x4c5f7c · A 코드 대상 조건 미확인)
- [x] F5-05 환율및기초자료(0201) — 18번 §2.3 · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [x] F5-06 중기목록표·시간당중기사용료(0202·0203) — Prn_Joong · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [x] F5-07 일위대가목록표(0301) — Prn_SanMok · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [x] F5-08 일위대가표(0302) — Prn_iLWi · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [ ] F5-09 일위대가표 수공양식(0303) — Prn_iLWi_S · 현재: 부분(수공양식 · 원본 견본 없음)
- [ ] F5-09 일위대가표 수공양식(0303) — Prn_iLWi_S · 현재: 부분(REA 38 — 수공양식 호표 끝 「합 계」 줄(0x5b1270) · 비목 칸 자리 설정·수량 열 미확인)
- [x] F5-10 단가산출근거목록표(0401) — Prn_SanMok · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [x] F5-11 단가산출근거(0402) — Calq_San · Edit_SanKun · 현재: 구현(report_san 단가산출근거 펼침 0402 · 3건 · 봉화 3,889행 글·금액·쪽 일치)
- [x] F5-12 재료·노무·경비 수량금액집계표(0501~0503) — Prn_Col_Dan · 현재: 구현(report_coll 0501~0503 · 봉화·영월·대흥 원본 엑셀 셀 일치(test_stmate_report_coll))
@@ -237,29 +237,29 @@
- [x] F5-16 단가산출근거수량금액집계표(0507) — Calq_San · 현재: 구현(단가산출근거수량금액집계표 0507 · 울진 변경1차 셀 일치)
- [x] F5-17 총괄내역서(0601·종양식 0602) — Prn_Nae · 현재: 구현(공종 줄 단계 = Start8x.Ini FLT_JAB+1 이상 · 원본 5건 · 영덕 변경 양식 셀 전부 일치(S_JDA 해석 추정))
- [x] F5-18 설계내역서(0603·종양식 0604·0693·0694) — Prn_Nae · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets))
- [ ] F5-19 분할내역서(0605) — Prn_Nae · 현재: 부분(분할내역서 · 엔진 합계 대조만)
- [ ] F5-20 사·관급내역서(0607) — Prn_Nae · 현재: 부분(사·관급내역서 · 견본 없음 · 합계 대조만)
- [x] F5-19 분할내역서(0605) — Prn_Nae · 현재: 구현(REA 38 — 금회 = 내역 2칸 QTY2·T_AMT2(Prn_Nae_B_EXL 0x528e00) · 분할 비율 입력 걷음 · 견본 없음)
- [ ] F5-20 사·관급내역서(0607) — Prn_Nae · 현재: 부분(REA 38 — 엑셀판 = 인쇄 때 만드는 BQM.DBF(0x53f230) · 준비 함수 미확인)
- [x] F5-21 공사원가계산서(0608) — Prn_Won_A · 현재: 구현(원가계산서 · 원본 엑셀 5건 대조(영덕 당초·변경·증감 양식 포함))
- [x] F5-22 총괄집계표(0609) — Prn_Col_Dan · 현재: 구현(REA 35 — 0609 = Prn_Won_A · 공사원가계산서와 같은 줄 · 구성비 = 금액÷총액×100(0x48c6ab) · 금액 0 빈칸(test_stmate_report_forms) · 셀 견본 없음)
- [ ] F5-23 견적내역서(0613·0614)·견적단가대비표(0615) — PM_Nae_Est · 현재: 부분(견적내역서·대비표 · 원본 견본 없음)
- [ ] F5-24 도공·굴착·시도·구도·비교 양식 내역서(0606·0651~0656·0672) — ST_P_Excav · Prn_Nae · 현재: 부분(구·시도 양식 · 엔진 합계 대조만 · 굴착·비교 견본 없음)
- [ ] F5-25 재료비·노무비·중장비 집계표(0675~0677) — Prn_Col_Dan · 현재: 부분(재료·노무·중장비 집계표 · 견본 없음)
- [ ] F5-26 장비·인력·자재 투입계획(0671·0678·0679)·간이명세서(0695) — Rep_Print · 현재: 부분(간이명세서 엔진 합계 대조 · 투입계획 견본 없음)
- [ ] F5-23 견적내역서(0613·0614)·견적단가대비표(0615) — PM_Nae_Est · 현재: 부분(REA 38 — 0615 = 줄마다 두 행 · 견적 1칸 · 기준 2칸 · 견적÷기준 %(0x5611dc) · 모든 줄 · 비고 갈래 설정 미확인)
- [ ] F5-24 도공·굴착·시도·구도·비교 양식 내역서(0606·0651~0656·0672) — ST_P_Excav · Prn_Nae · 현재: 부분(REA 38 — 0651 시기금·구기금 = 고른 1·2 차수 금액(0x59e818) · 영덕 공종 줄 일치 · 비율 입력 걷음 · 0655 칸 배치 미확인)
- [ ] F5-25 재료비·노무비·중장비 집계표(0675~0677) — Prn_Col_Dan · 현재: 부분(REA 38 — 0675~0677 = 0x558c64 · DES1·DES2 채움 미확인)
- [ ] F5-26 장비·인력·자재 투입계획(0671·0678·0679)·간이명세서(0695) — Rep_Print · 현재: 부분(REA 38 — 0695 회사분 0 · 도급분 원가 줄 참조 · 소계·합계 수식 · 칸 A~K 정정(0x55f168) · 작성자 글·투입계획 설정 미확인)
- [x] F5-27 목차 시트(〓 목 차 〓) — 19번 §3 · 현재: 구현(report_link 목차 3건 셀·바로가기 수식 일치(울진 판 표기만 다름))
- [ ] F5-28 안내 시트(※※안내※※) — 19번 §3 · 현재: 부분(안내 3건 일치 · 설계내역서 줄 번호만 다름 · 알림 조건 추정)
- [x] F5-28 안내 시트(※※안내※※) — 19번 §3 · 현재: 구현(REA 38 — 설계내역서 쪽 채움 LNP_CNT(0x520e34) · 원본 3건 행 수·빈 줄·숨은 총합계 줄 일치 · 안내 줄 번호 일치(test_stmate_report_link))
- [x] F5-29 〓 INITIAL 〓 설정 스냅샷 시트 — 18번 §2.3 · 현재: 구현(report_init INITIAL 시트 · 3건 일치(파일 자리·작성자·날짜 제외))
- [ ] F5-30 제잡비 요율표 인쇄 — PM_KAN_RATE · 현재: 부분(제잡비 요율표 인쇄 · 견본 없음)
- [ ] F5-31 엑셀 다중 시트 내보내기·수식 보존 — ST_P_XLS Prn_FMLA_INFO · 현재: 부분(목록·집계·일위대가표·중기사용료 원본 수식 글 그대로 · 원가 줄·산근 수식 없음)
- [ ] F5-32 보고서 인쇄·미리보기 — PM_* · 현재: 부분(서식 목록·미리보기·인쇄·엑셀·CSV · 인쇄 영역·열 숨김·탭 색)
- [ ] F5-33 가로형·토개공·수자원·산근양식 변형 — PM_*_L · PM_Prt · 현재: 부분(가로형 방향만 · 토개공·수자원 양식 없음)
- [ ] F5-30 제잡비 요율표 인쇄 — PM_KAN_RATE · 현재: 부분(REA 38 — 엑셀판·인쇄 분기 없음(ST_KanJub 전용) · 견본 없음)
- [ ] F5-31 엑셀 다중 시트 내보내기·수식 보존 — ST_P_XLS Prn_FMLA_INFO · 현재: 부분(REA 38 — 원가 줄·원가계산서 원본 수식 꼴 기록(§8) · 미구현)
- [ ] F5-32 보고서 인쇄·미리보기 — PM_* · 현재: 부분(REA 38 — 인쇄 영역 $A:$열 · 탭 색 · 안내·INITIAL 세로 · 숨은 열 — 원본 3건 일치 · 배율·여백·바닥글 미확인)
- [ ] F5-33 가로형·토개공·수자원·산근양식 변형 — PM_*_L · PM_Prt · 현재: 부분(REA 38 — 토개공·수자원 글 설치본 전체에 없음 · 가로형 방향만)
- [x] F5-34 출력별 반올림(내역 절사·집계 사사오입) — 06번 §3 · 18번 §2.4 · 현재: 구현(출력별 반올림 · 집계표 사사오입 원본 일치)
- [x] F5-35 금액 한글 표기(AMTTOHAN) — 24번 §2.4 · 현재: 구현(금액 한글 표기 · 원본 한글 금액 11건 전부 일치)
- [x] F5-36 SET_REP 데이터 기반 열·폭·제목 — 20번 §3 · 현재: 구현(SET_REP 서식 제목·시트 이름 적용 · 보고서 시험 포함)
### G6 설계변경·계약·실행·기성 (구현 30 · 부분 6 · 없음 0) — 91.7%
### G6 설계변경·계약·실행·기성 (구현 34 · 부분 2 · 없음 0) — 97.2%
- [x] F6-01 차수 4벌(원설계+3차변경) 칸 관리 — 08번 §2 · 24번 §7 · 현재: 구현(2·3·4차수 칸 고침이 저장 후 유지(test_slot_2_3_4_edits_persist))
- [ ] F6-02 통합형 BOQ11+BOQ12에서 BOQ12 현재안 — 16번 §4.5 · 현재: 부분(울진 BOQ12 = 계약내역(STMATE 착공내역서) 판명 · contract_calc 로 BOQ11 에서 1원 재현)
- [ ] F6-02 통합형 BOQ11+BOQ12에서 BOQ12 현재안 — 16번 §4.5 · 현재: 부분(공사 고르기(load-boq) 있음 · 파일 열 때 원본이 처음 고르는 공사 미확인(서버 기본 BOQ11))
- [x] F6-03 분리형 변경 STC 생성·차수 인계 — 16번 §4.6 · 현재: 구현(stc_change 소광 원설계 → 실제 변경1차 차수1 말단 47행·직접비·요율 41키 일치(test_stmate_conv_change))
- [x] F6-04 변경 수량 입력 — 설계변경 · 현재: 구현(change_calc · 영덕·소광 변경 BOQ11 1·2차수 수량·단가·금액 일치)
- [x] F6-05 변경 단가·신규 공종·삭제 항목(0 유지) — 08번 §2 · 현재: 구현(change_calc 신규·삭제(0 유지) · 변경 2건 대조)
@@ -271,9 +271,9 @@
- [x] F6-11 2차·3차 변경 계산 — wM_KanJub cBx_Chasu · 현재: 구현(REA 34 차수 콤보 PCLASS 갈래 · 직전 계열 되셈 사슬 · 당초액 유지 = 직전 계열 · 상한 4차 = 계열 5(MCOST5·QTY5 · K_ORD>4 거부 · Ghidra 확인)(test_stmate_stage_change_rea · test_stmate_kanjub_rea) · 3~5 실물 표본 없음)
- [x] F6-12 원가계산서 당초/변경 대비·변경분만 인쇄 — PM_Won_A_C · Cmbx_PORD1_H · 현재: 구현(당초/변경 대비 · 변경분만 인쇄 · 영덕 엑셀 공사원가계산서 일치)
- [x] F6-13 설계변경내역서(0643·0644) — CHANGE_STR · 현재: 구현(설계변경내역서 · 영덕 엑셀 당초·변경 줄 전부 일치)
- [ ] F6-14 변경내역서(변경율)(0645) — CHANGE_AMT · 현재: 부분(변경율 내역서 · REA 34 §17.6 0645 = 「설계변경내역서(변경율)」 머리 「증 감」 · 율 식 미확인)
- [x] F6-14 변경내역서(변경율)(0645) — CHANGE_AMT · 현재: 구현(REA 39 — Prn_Nae_C1 0x46abf5 변경 줄 증감액 · 당초 줄 증감율 (변경−당초)÷당초×100 '0.## %' · 0 또는 같으면 빈칸(test_stmate_stage_forms_rea))
- [x] F6-15 설계변경증감대비표(0648)·금액대비표 — CHANGE_AMT · 현재: 구현(증감대비표·금액대비표 · 영덕 엑셀 행 차례·금액 일치 · 인쇄·엑셀)
- [ ] F6-16 변경총괄·굴착·시도 변경내역서(0661~0666) — CHANGE_* · 현재: 부분(변경총괄 = 영덕 엑셀 총괄내역서 일치 · REA 34 §17.6 0651~0667 구.시도/시도/구도 = 시비·구비·합 · 굴착 계열 짝 = change_calc.excavTable · 칸 차례 조건부)
- [ ] F6-16 변경총괄·굴착·시도 변경내역서(0661~0666) — CHANGE_* · 현재: 부분(REA 39 — 0661 시비[1,3]·구비[2,4] · 0662 [1,3] · 0663 [2,4] 구현 · 0664~0667 Ex2 갈래(굴착0·시도1·구도2) 확인 · 시도·구도 줄 칸 차례·Ex2_T 미확인)
- [x] F6-17 계약 변환 비목별 단가적용율(노·재·경) — wM_Mk_Cont · 현재: 구현(contract_calc 노·재·경 적용율 버림 · 울진 BOQ12 계약내역 1원)
- [x] F6-18 계약 변환 옵션(기초단가·일위/산근 생성·동일코드·노무비율·비과세) — 27번 §2.2 · 현재: 구현(REA 32 TwM_Mk_Cont · 생성 켬=율 하나 노·재·경 · 끔=비목별·새 코드 W·대표율 0 공내역 · 비과세 = C_NBUGAM·C_BUGA_M × 재료비율(test_stmate_stage_contract_rea))
- [x] F6-19 적용율 0% → W코드 공내역 — 27번 §2.2 · 현재: 구현(0% 공내역 W코드 · 울진 대조)
@@ -291,9 +291,9 @@
- [x] F6-31 기성 제잡비(금회직접×계약제잡비율) — 27번 §3.1 · 현재: 구현(REA 33 0x4cdec0 금회 = 버림(계약잡비율 × 금회 직접비) · 마지막 회차 = 도급 − 전회)
- [x] F6-32 기성 부가세 4택·절사·이윤 직접입력 — 27번 §3.3 · 현재: 구현(REA 33 0x4ce2c8 부가세 4택 · 공급가액/총공사비 절사 택일 · 차액 이윤 차감 · 1~10원 남으면 이윤 1원씩)
- [x] F6-33 기성 집계수준 필터(소계~총합계) — wM_KanJub_K rd_Filter · 현재: 구현(REA 33 집계수준 = 고른 순번+1 이상 머리 행)
- [ ] F6-34 기성부분총괄·기성내역서·사정·기성율(0632~0635) — Prn_Jab · 현재: 부분(0632 열·비율·머리말 = REA 33 · 0633~0635 열 식 미해독)
- [ ] F6-35 기성검사조서(을·병)·기성부분수량조서(0636~0638) — Prn_Jab · 현재: 부분(기성검사조서·수량조서 · 표본 없음)
- [ ] F6-36 준공조서(을·병)(0646·0647) — SET_REP · 현재: 부분(준공금액 = 마지막 회차 누계 이관(가정) · 준공조서 열 식 미해독)
- [x] F6-34 기성부분총괄·기성내역서·사정·기성율(0632~0635) — Prn_Jab · 현재: 구현(REA 39 — 0633·0634 = Prn_Nae_K2 칸 '1342' · 0634 비고 머리 「사 정」(갈래 4 · 사정 금액 추측 걷음) · 0635 = K3 비율 QTYn÷QTY1×100)
- [x] F6-35 기성검사조서(을·병)·기성부분수량조서(0636~0638) — Prn_Jab · 현재: 구현(REA 39 — 0638 기성% QTY2÷QTY1 · 잔량 QTY1−QTY2 · 0636·0637 = C3 기성고 T_AMT3·4·2÷T_AMT1 · 기성금액 T_AMT2 · 을 = 머리 줄만 · 도급자·대표 원천 없음)
- [x] F6-36 준공조서(을·병)(0646·0647) — SET_REP · 현재: 구현(REA 39 — 준공 계약·준공금액 = T_AMT+인쇄 칸 배열 첫 값(기성 4·계약 1 · 0x479395) · 누계 이관 가정 걷음 · PCLASS 2·3·7 칸 기본값 미확인)
---
+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"],
+25 -20
View File
@@ -15,7 +15,7 @@ const StmateReportForms = (() => {
const B = g.STMATE_REPORT_BOQ || require("./report_boq.js");
const Co = g.STMATE_REPORT_COLL || require("./report_coll.js");
const In = g.STMATE_REPORT_INIT || require("./report_init.js");
const { num, str, code, half, trunc } = C;
const { num, str, code, half } = C;
/**
* 인쇄 분기(ST_Prt 0x44fc34 · 분기 값 = 20000 + 서식 번호) — 서식 → [인쇄 함수, 엑셀 함수, 모듈]
@@ -287,36 +287,41 @@ const StmateReportForms = (() => {
}
/**
* 0651·0655 구.시도 양식 — 금액을 시기금·구기금으로 나눔(opts.fundRate = 시기금 %, 기본 100) · 합계
* 0655 = 품목 줄(Prn_Nae_Ex1_T) · 0651 = 공종 묶음 줄(Prn_Nae_Ex1_CT) · 나눔 비율 출처는 미확인
* 0651·0655 구.시도 양식 — 시기금 · 구기금 · 합계
* 엑셀판 Prn_Nae_Ex1_CT_EXL(ST_P_XLS 0x59e818) = PRT.DBF 4열 T_AMT1 · 5열 T_AMT2 · 6열 =SUM(D:E) ·
* PRT.DBF 준비(ST_P_Excav 0x47d564) = 고른 차수마다 T_AMT<접미>(설정 +0x1788 개수 · +0x1789~ 차수) — 1·2 칸 금액
* 0651(CT) 칸 = 공종 · 명칭 · 규격 · 시기금 · 구기금 · 합계 / 0655(Ex1_T 품목 줄) 칸 배치는 미확인(수량 칸 둠)
*/
function fundSheet(dbf, tree, indx, opts = {}) {
function fundSheet(dbf, tree1, tree2, indx) {
const f = fields(dbf, indx);
const rate = opts.fundRate == null ? 100 : num(opts.fundRate);
const two = byRec(tree2);
const items = indx === "0655";
const [c1, c2, c3] = items ? ["E", "F", "G"] : ["D", "E", "F"];
const id = items ? "설계내역서구시도" : "총괄내역서구시도";
const title = items ? "설 계 내 역 서 (구.시도)" : "총 괄 내 역 서 (구.시도)";
const sh = C.newSheet(id, title, C.projectName(dbf), "J");
const head = { A: "공 종", B: "명 칭", C: "규 격", D: items ? "수 량" : "" };
const tail = {
E: f[0] || "시 기 금",
F: f[1] || "구 기 금",
G: f[2] || "합 계",
_k: "head",
};
C.push(sh, Object.assign(head, tail));
for (const n of tree.out) {
const head = { A: "공 종", B: "명 칭", C: "규 격", _k: "head" };
if (items) head.D = "수 량";
Object.assign(head, {
[c1]: f[0] || "시 기 금",
[c2]: f[1] || "구 기 금",
[c3]: f[2] || "합 계",
});
C.push(sh, head);
for (const n of tree1.out) {
if (!(n.kind === "T" || (items && n.kind === "item"))) continue;
const v = T4(n.kind === "T" ? n.sum : n.amt);
const si = trunc((v * rate) / 100);
const m = two.get(n.row._recno);
const amt = (x) => (x ? T4(x.kind === "T" ? x.sum : x.amt) : 0);
const cells = {
A: n.kind === "T" ? str(n.row.ITNUM).trim() : "",
B: str(n.row.NAME1),
C: str(n.row.SIZE1),
};
if (n.kind === "item") cells.D = n.qty;
Object.assign(cells, { E: si, F: v - si, G: v, _k: n.kind === "T" ? `T${n.level}` : "item" });
C.push(sh, cells);
const a = amt(n),
b = amt(m);
Object.assign(cells, { [c1]: a, [c2]: b, [c3]: a + b });
C.push(sh, Object.assign(cells, { _k: n.kind === "T" ? `T${n.level}` : "item" }));
}
return form(sh, dbf, indx);
}
@@ -616,8 +621,8 @@ const StmateReportForms = (() => {
총괄내역서시도: retitle(summary, dbf, "0652", "총괄내역서시도"),
총괄내역서구도: retitle(summary, dbf, "0653", "총괄내역서구도"),
총괄내역서비교: retitle(summary, dbf, "0672", "총괄내역서비교"),
총괄내역서구시도: fundSheet(dbf, tree, "0651", opts),
설계내역서구시도: fundSheet(dbf, tree, "0655", opts),
총괄내역서구시도: fundSheet(dbf, tree1, tree2, "0651"),
설계내역서구시도: fundSheet(dbf, tree1, tree2, "0655"),
재료비집계표: collSheet(u, tree, "0675", "M", opts),
노무비집계표: collSheet(u, tree, "0676", "L", opts),
중장비집계표: collSheet(u, tree, "0677", "X", opts),
+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`);
},
-3
View File
@@ -29,7 +29,6 @@
// 공종 집계수준 — Start8x.Ini FLT_JAB(PM_Sel_St 고른 자리) + 1 단 이상(report_boq summaryLevel)
level: /^\d$/.test(String(ini.FLT_JAB ?? "").trim()) ? Number(ini.FLT_JAB) + 1 : 2,
changeOnly: false,
fundRate: 100,
formulas: false,
};
}
@@ -58,7 +57,6 @@
minLevel: Number(o.level) || 2,
level: Number(o.level) || 2,
changeOnly: !!o.changeOnly,
fundRate: Number(o.fundRate),
date: `${today.getFullYear()}-${pad(today.getMonth() + 1)}-${pad(today.getDate())} ${pad(today.getHours())}:${pad(today.getMinutes())}`,
};
const print = { font: o.font, size: Number(o.size) || 10 };
@@ -147,7 +145,6 @@
].map((t, i) => [i + 1, `${t} 이상`]),
o.level,
)}</div>
<div>시기금 비율 <input data-ro="fundRate" value="${esc(o.fundRate)}" size="4">%</div>
<div><label><input type="checkbox" data-ro="formulas" ${o.formulas ? "checked" : ""}> 엑셀 수식 넣기(내역·일위대가·집계 금액)</label></div>
</fieldset>
<fieldset style="min-width:260px"><legend>인쇄순서</legend><div style="max-height:180px;overflow:auto">${ord}</div>