feat(stmate-test): REA MCP(Ghidra) 실행·계약 재검증 — MROUNDUP · ITM_TYP 이름 · 실행예산서 Ⅰ·Ⅱ · 계약·실행내역서 열 · 장부
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+36
-11
@@ -169,12 +169,12 @@ OPTIMIZ(묶음 T=X, 우선 0, 자릿수 = wCm_Jeol 값(0~−5), 출력칸 1, 모
|
||||
|
||||
설정 키(0x42aeba~0x42af11): +0x7c4 = START/CHGNM(단가산출근거 계산방식 · 기본 참) · +0x7c6 = START/CHBNM(일위대가표 · 기본 = CHGNM 값) · +0x7c5 = START/CHNNM(내역서 · 기본 참). ST_Sys cmBx_CHG·CHB·CHN 항목 「비목별금액 먼저계산」「총액 먼저 계산」.
|
||||
|
||||
### 5.5 적용제외 공정 · 높음(ITM_TYP 뜻 미확인)
|
||||
### 5.5 적용제외 공정 · 높음(ITM_TYP 이름은 8.2 절)
|
||||
|
||||
- 목록 0x55409c: `BDCODE1="T" .and. BDCODE1>="T<n>"`(n = cBx_Lev 값 T1~T9) → 계표시 머리만 · 열 ITNUM·NAME1·SIZE1·T_AMT1·BDCODE1 · 5열 적용제외 기본 체크 = ITM_TYP ∈ {11, 21, 31, 41, 51, 71, 72}(비트표 0x55448c) · 6열 RecNo.
|
||||
- 확인 0x553c08: 체크된 행 RecNo 를 전역 동적 배열 0x5fa124 에 모음 → 확인 창 → 플래그 [0x5fa11c] = 1.
|
||||
- 변환 고리 0x555f68~0x5560d6: SORTCODE 차례 · 고른 RecNo 를 만나면 그 ENDCODE 까지 건너뜀 · 닫는 행에서 해제.
|
||||
- 표본 7건 모든 머리 ITM_TYP = 0(관찰).
|
||||
- 표본 7건 모든 머리 ITM_TYP = 0(관찰) · 이름표는 8.2 절.
|
||||
|
||||
### 5.6 비과세자재대 옵션 · 높음(키) / 중간(마지막 기록 뜻)
|
||||
|
||||
@@ -189,7 +189,7 @@ OPTIMIZ(묶음 T=X, 우선 0, 자릿수 = wCm_Jeol 값(0~−5), 출력칸 1, 모
|
||||
| 0673 | 실행예산서Ⅰ | 실 행 예 산 서 | 공종 25 · 설계(계획) 20 · 실행예산 25 · 작업명 15 · 구분 25 |
|
||||
| 0674 | 실행예산서Ⅱ | 실 행 예 산 서 | 같은 다섯 열 |
|
||||
|
||||
ST_Prt.CPM 의 「실행예산서Ⅰ」「실행예산서Ⅱ」는 메뉴 목록 문자열 묶음 안에만 있고 직접 참조 코드 없음 — Ⅰ·Ⅱ 의 행 고르기 차이는 미확인.
|
||||
Ⅰ·Ⅱ 의 인쇄 모듈·줄 고르기는 8.2 절(REA MCP 보강).
|
||||
|
||||
## 7. 실물 대조
|
||||
|
||||
@@ -201,14 +201,39 @@ ST_Prt.CPM 의 「실행예산서Ⅰ」「실행예산서Ⅱ」는 메뉴 목록
|
||||
| 비과세자재대 키 | 7건 모두 C_NBUGAM 0 · 영덕만 C_BUGA_M 비0(설계 공사) — 계약 표본 대조 없음 |
|
||||
| 실행예산·중기 실행단가 | 표본 0건 — 손계산 대조만 |
|
||||
|
||||
## 8. 미확인
|
||||
## 8. REA MCP 보강 (rea-agents 6.7.0 · Ghidra 12.1.4 · 같은 날)
|
||||
|
||||
- 방법: REA MCP 세션(`open_binary` provider ghidra · `procedure_pseudo_code` · `resolve_containing_procedure`) + 앞 절 capstone 대조. 근거 원문 `evidence/rea_mcp/*.json`(evidence_id 포함) · 새 역어셈블 창 `evidence/*.asm.txt`.
|
||||
- Ghidra 함수 관리자 한계: Delphi 게시 메서드(TwM_Mk_Cont.Act_Find_NagExecute 0x556d68 · MK_CONT_BOQ_ 0x555ce8 · Act_Calc_EstExecute 0x5569d8 · ST_Boq 0x456504)는 「not_in_procedure」 — 그 부분은 capstone 결과 유지.
|
||||
|
||||
### 8.1 교차 확인
|
||||
|
||||
| 대상 | REA 근거 | 결과 |
|
||||
|---|---|---|
|
||||
| 계약 코드 갈래 0x554be0 | `main_conv.json` · `STmate_0x554be0_ghidra_pseudo.c` | 5.3·5.4 와 같음 — 생성 켬·대표율 0 관문, B·D·X/L·M·S·W/Q 갈래, `WBXDMLS` 자리, 대표율 100·0 건너뜀, 세 율 같음 → OPTIMIZ(B·D·그 밖 세 갈래), 다름 → MROUNDUD 셋, 새 코드 `'00000'`, 번호 되씀(+0x7bc·+0x7a0…), NAGCD·UC·BCONT 는 새 코드 첫 글자 B·D·X 일 때만 · **고칠 것 없음** |
|
||||
| MROUNDUP 0x4547ac | `dpc_mroundup.json` | 아래 8.2 |
|
||||
|
||||
### 8.2 풀린 미확인
|
||||
|
||||
| 항목 | 관찰 | 근거 | 확신 |
|
||||
|---|---|---|---|
|
||||
| MROUNDUP(값, 자릿수) | FormatFloat('0.##########') 로 미소값 자리 정함(MROUNDUD 와 같은 표) → FormatFloat('0.0#########', \|값\|+미소값) → 자릿수에서 자름 → 버린 다음 숫자(최대 10자리)를 '0.' 뒤에 붙여 0x4297f4(= Trunc + (Frac > 0), Math.Ceil) → 하나라도 0 아니면 10^−d 더함 · 부호 복원 | Ghidra 의사코드 · 0x4297f4 capstone | 높음 |
|
||||
| ITM_TYP 뜻 | ST_U_Convert 상수 배열 0x587d9c(문자열 121칸, 0~120) = 0 일반공종 · 10·11 안전관리비 · 20·21 품질관리비 · 30·31 미확정설계공종(PS) · 40 제요율적용제외공종 · 41 제비율적용제외공종 · 50·51 작업설 등 · 60·61 매입세 · 70 관급자재공종 · 71 관급자재대(도급자) · 72 관급자재대(관급자) · 111 비과세자재대 · 120 조달수수료. ST_Boq 0x4fe15b 는 T·E·C 줄의 ITM_TYP 1~119 를 이 목록 이름으로 바꿔 표시 | `ST_U_Convert_ITM_TYP_name_table_0x587d9c.txt` · `ST_Boq_ITM_TYP_lookup_0x4fe15b.asm.txt` | 높음(이름) · 중간(x0·x1 차이) |
|
||||
| 적용제외 기본 체크 | ITM_TYP 11·21·31·41·51·71·72 = 안전관리비·품질관리비·PS·제비율적용제외·작업설 등·관급자재대(도급자·관급자) | 위 + 0x55448c | 높음 |
|
||||
| 울진 관급 줄 미변환 | BOQ11 T3「관급자재대」(닫음 C3「합계(제외금액)」) 블록과 T3「페기물처리」 블록 = 계약에서 코드가 그대로인 공종 전부 · 두 머리 ITM_TYP 0 → 사용자 선택(기본 체크 아님) · 변환 고리에 구역 조건 없음과 맞음 | 울진 STC 대조(시험) | 높음 |
|
||||
| 실행예산서 Ⅰ·Ⅱ(0673·0674) | ST_Prt 보고서 분기 0x44fdf5 · 꼬리표 20000+INDX 표 0x44ffc0 → 20673 = `Prn_Nae_Cont1` · 20674 = `Prn_Nae_Cont2`(ST_P_Nae.CPM) · 둘 다 모드값([0x57a4e0] 1·2)만 다르고 0x4c1904 공용 · 양식 PM_Nae_Cont(제목 「실행예산서」) | `ST_Prt_report_dispatch_0x44fdf5.asm.txt` · `ST_Prt_tag_table_20623_20695.txt` · `ST_P_Nae_Prn_Nae_Cont1_2_0x4c27f8.asm.txt` | 높음 |
|
||||
| Ⅰ·Ⅱ 줄 고르기 | 모드 1: 출력 설정 +0x1768 켬이면 조회식 `!(SUBSTR(BDCODE1,1,1)$"MLSWBDXAP" .and. QTY1=0)` · 모드 2: `SUBSTR(BDCODE1,1,1)$"TEC" .or. RS=1` · 모드 2 는 HRGroup1BeforePrint(0x4c3d38)에서 C1·E1(소계 닫음) 줄 안 찍음 · T1 머리 별도 처리(0x4c440e) | `ST_P_Nae_report_filter_mode_0x4c245d.asm.txt` · `…HRGroup1BeforePrint_0x4c3cd0.asm.txt` | 높음(조회식) · 중간(RS 칸 뜻) |
|
||||
| 실행예산서 열 | PM_Nae_Cont 머리 띠: 공종 · 설계(계획)[수량·단위·금액] · 실행예산[작업명·구분·수량·단위·재료비·노무비·경비·총액(각 단가·금액)·비고] · 자료 칸 DES1·ITNUM·QTY2·UNIT2·T_AMT2·DES2·NAME1·SIZE1·UNIT1·BDCODE1 → 설계(계획) = 2칸 · 실행 = 1칸. SET_REP 다섯 열(6절)은 묶음 머리 | `ST_P_Nae_TPM_NAE_CONT.dfm.txt` | 높음(열) · 중간(작업명 = NAME1·구분 = SIZE1 대응) |
|
||||
| 계약,실행내역서(0623·0624) | 20623 → `Prn_Nae` 또는 `Prn_NaeW`(설정 플래그로 고름) · 20624 → `Prn_Nae_P` 또는 `Prn_NaeW_P` — 설계 내역서와 같은 인쇄 모듈을 지금 공사(계약·실행)에 씀 · SET_REP FLDCNT 0 = 내역서 기본 열 | `ST_Prt_case_0623_0624_0x4513e7.asm.txt` | 높음(모듈) · 중간(플래그 뜻) |
|
||||
| 실행예산 행 금액 0x456504 | 행 칸(QTY·PRPT·BDCODE·CODE·BIMOK·SBMOK·GUN·EQCODE·X_CODE·S_RATE·ITM_TYP·PRIN·PROUT·RATE…)을 계산 묶음에 싣고 수량칸 6개마다 0x433490(Q·A 줄) · 0x44019c → 0x43dee8(공용 행 계산) 부름 · CHNNM 바이트 전달 · OPTIMIZ 는 공용 계산 쪽(0x440aa1 등) — 설계 내역과 같은 행 엔진 | `ST_Boq_row_calc_0x456504.asm.txt` | 중간~높음 |
|
||||
| 예상적용율 찾기 0x556d68 | 직접공사비 TCOST 0 이면 거절 · 0x45f974(원가계산 전체)로 총공사비 · 기본 목표 = 0.5~1.5 배 범위 안내 + 입력창 · 첫 율 = MROUNDUP(직접비 ÷ (총공사비 − 고정분), 5) · 되풀이: 비목 합(MCOST·LCOST·SCOST) × 율 → MROUNDUD(·,0,0) → 다시 원가계산 · 오차 비 ≥ 1/N 이면 율 ± 1/(2N)(N = min(5000, round(목표 ÷ 5000)))·MROUNDUD(·,5,0) · 마지막 율 × 100(소수 셋째 = 0.001%) · 행 단위 변환이 아니라 **비목 합 근사**(「대략」) | `STmate_TwM_Mk_Cont_Act_Find_NagExecute_0x556d68.asm.txt` | 중간 |
|
||||
|
||||
## 9. 미확인
|
||||
|
||||
| 항목 | 막힌 까닭 |
|
||||
|---|---|
|
||||
| MROUNDUP 본문 | 이름·호출 자리만 · 올림(0 반대쪽)으로 읽음 |
|
||||
| ITM_TYP 코드 뜻 | 표본 머리 전부 0 |
|
||||
| 실행예산서 Ⅰ·Ⅱ 행 차이 | ST_Prt 직접 참조 없음 |
|
||||
| 행 금액 계산 0x456504(ST_Boq) | 미해독 |
|
||||
| 울진 관급 구역 줄 미변환 까닭 | 변환 고리에 구역 조건 없음 · 머리 선택 또는 ITM_TYP 기본 체크 추정 불가 |
|
||||
| 예상적용율 찾기 0x556d68 | 5000 나눔 반복·MROUNDUP 다수 — 세부 미해독 |
|
||||
| MkBoq 1칸 → 3칸 복사 갈래 조건 | PCLASS 분기표 미해독 |
|
||||
| RS 칸 뜻(실행예산서 Ⅱ 줄 고르기) | 실행예산 내역 만들기(MkBoq) 갈래 미해독 · 표본 0건 |
|
||||
| 출력 설정 +0x1768 · 0623 의 Prn_Nae/Prn_NaeW 고름 플래그 이름 | 설정 화면 대응 미추적 |
|
||||
| 예상적용율 찾기의 「고정분」(0x45f974 두 번째 결과) 정체 | 원가계산 내부 인자 미해독 |
|
||||
| ITM_TYP x0·x1 차이(머리·공종?) | 표본 7건 ITM_TYP 전부 0 |
|
||||
| MkBoq 1칸 → 2칸·3칸 복사 갈래 조건 | PCLASS 분기표 미해독 |
|
||||
|
||||
+419
@@ -0,0 +1,419 @@
|
||||
0x4547ac: push ebp
|
||||
0x4547ad: mov ebp, esp
|
||||
0x4547af: mov ecx, 0x14
|
||||
0x4547b4: push 0
|
||||
0x4547b6: push 0
|
||||
0x4547b8: dec ecx
|
||||
0x4547b9: jne 0x4547b4
|
||||
0x4547bb: push ecx
|
||||
0x4547bc: push ebx
|
||||
0x4547bd: push esi
|
||||
0x4547be: push edi
|
||||
0x4547bf: xor eax, eax
|
||||
0x4547c1: push ebp
|
||||
0x4547c2: push 0x454cff
|
||||
0x4547c7: push dword ptr fs:[eax]
|
||||
0x4547ca: mov dword ptr fs:[eax], esp
|
||||
0x4547cd: fld xword ptr [ebp + 8]
|
||||
0x4547d0: fabs
|
||||
0x4547d2: add esp, -0xc
|
||||
0x4547d5: fstp xword ptr [esp]
|
||||
0x4547d8: wait
|
||||
0x4547d9: lea edx, [ebp - 0x14]
|
||||
0x4547dc: mov eax, 0x454d1c ; str='0.##########'
|
||||
0x4547e1: call 0x40a19c
|
||||
0x4547e6: mov eax, dword ptr [ebp - 0x14]
|
||||
0x4547e9: push eax
|
||||
0x4547ea: lea eax, [ebp - 0x2c]
|
||||
0x4547ed: push eax
|
||||
0x4547ee: call 0x453e4c
|
||||
0x4547f3: mov edx, dword ptr [ebp - 0x2c]
|
||||
0x4547f6: lea eax, [ebp - 0x14]
|
||||
0x4547f9: call 0x4045bc
|
||||
0x4547fe: fld xword ptr [ebp + 8]
|
||||
0x454801: fld xword ptr [0x454d2c]
|
||||
0x454807: fcompp
|
||||
0x454809: fnstsw ax
|
||||
0x45480b: sahf
|
||||
0x45480c: jae 0x454832
|
||||
0x45480e: lea eax, [ebp - 0x30]
|
||||
0x454811: mov ecx, 0x454d40 ; str=' 값은 계산의 한계범위를 벗어난 값입니다.'
|
||||
0x454816: mov edx, dword ptr [ebp - 0x14]
|
||||
0x454819: call 0x404828
|
||||
0x45481e: mov ecx, dword ptr [ebp - 0x30]
|
||||
0x454821: mov dl, 1
|
||||
0x454823: mov eax, dword ptr [0x407ab4]
|
||||
0x454828: call 0x40b1d0
|
||||
0x45482d: call 0x403efc
|
||||
0x454832: mov edx, dword ptr [ebp - 0x14]
|
||||
0x454835: mov eax, 0x454d74 ; str='.'
|
||||
0x45483a: call 0x404b18
|
||||
0x45483f: mov ebx, eax
|
||||
0x454841: test ebx, ebx
|
||||
0x454843: jle 0x45488b
|
||||
0x454845: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454848: call 0x4047dc
|
||||
0x45484d: sub eax, ebx
|
||||
0x45484f: cmp eax, 0xb
|
||||
0x454852: jge 0x45488b
|
||||
0x454854: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454857: call 0x4047dc
|
||||
0x45485c: mov esi, eax
|
||||
0x45485e: test esi, esi
|
||||
0x454860: jle 0x45488b
|
||||
0x454862: mov edi, 1
|
||||
0x454867: mov eax, dword ptr [ebp - 0x14]
|
||||
0x45486a: mov al, byte ptr [eax + edi - 1]
|
||||
0x45486e: add al, 0xcf
|
||||
0x454870: sub al, 9
|
||||
0x454872: jae 0x454887
|
||||
0x454874: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454877: call 0x4047dc
|
||||
0x45487c: sub eax, edi
|
||||
0x45487e: cmp eax, 0xb
|
||||
0x454881: jge 0x45488b
|
||||
0x454883: xor ebx, ebx
|
||||
0x454885: jmp 0x45488b
|
||||
0x454887: inc edi
|
||||
0x454888: dec esi
|
||||
0x454889: jne 0x454867
|
||||
0x45488b: mov eax, ebx
|
||||
0x45488d: sub eax, 1
|
||||
0x454890: jb 0x4548a2
|
||||
0x454892: dec eax
|
||||
0x454893: sub eax, 8
|
||||
0x454896: jb 0x4548e7
|
||||
0x454898: sub eax, 4
|
||||
0x45489b: jb 0x45490e
|
||||
0x45489d: jmp 0x454931
|
||||
0x4548a2: xor eax, eax
|
||||
0x4548a4: mov dword ptr [ebp - 0x28], eax
|
||||
0x4548a7: mov dword ptr [ebp - 0x24], eax
|
||||
0x4548aa: mov word ptr [ebp - 0x20], ax
|
||||
0x4548ae: cmp dword ptr [ebp + 0x14], 0
|
||||
0x4548b2: jl 0x454952
|
||||
0x4548b8: mov eax, dword ptr [ebp - 0x14]
|
||||
0x4548bb: push eax
|
||||
0x4548bc: push 0x454d74
|
||||
0x4548c1: call 0x453640
|
||||
0x4548c6: test al, al
|
||||
0x4548c8: jne 0x454952
|
||||
0x4548ce: mov eax, dword ptr [ebp + 8]
|
||||
0x4548d1: mov dword ptr [ebp - 0x10], eax
|
||||
0x4548d4: mov eax, dword ptr [ebp + 0xc]
|
||||
0x4548d7: mov dword ptr [ebp - 0xc], eax
|
||||
0x4548da: mov ax, word ptr [ebp + 0x10]
|
||||
0x4548de: mov word ptr [ebp - 8], ax
|
||||
0x4548e2: jmp 0x454cb4
|
||||
0x4548e7: push 0x4002
|
||||
0x4548ec: push 0xa0000000
|
||||
0x4548f1: push 0
|
||||
0x4548f3: sub ebx, 0xd
|
||||
0x4548f6: mov dword ptr [ebp - 0x34], ebx
|
||||
0x4548f9: fild dword ptr [ebp - 0x34]
|
||||
0x4548fc: add esp, -0xc
|
||||
0x4548ff: fstp xword ptr [esp]
|
||||
0x454902: wait
|
||||
0x454903: call 0x42983c
|
||||
0x454908: fstp xword ptr [ebp - 0x28]
|
||||
0x45490b: wait
|
||||
0x45490c: jmp 0x454952
|
||||
0x45490e: push 0x4002
|
||||
0x454913: push 0xa0000000
|
||||
0x454918: push 0
|
||||
0x45491a: push 0xc001
|
||||
0x45491f: push 0x80000000
|
||||
0x454924: push 0
|
||||
0x454926: call 0x42983c
|
||||
0x45492b: fstp xword ptr [ebp - 0x28]
|
||||
0x45492e: wait
|
||||
0x45492f: jmp 0x454952
|
||||
0x454931: push 0x4002
|
||||
0x454936: push 0xa0000000
|
||||
0x45493b: push 0
|
||||
0x45493d: push 0xc002
|
||||
0x454942: push 0x90000000
|
||||
0x454947: push 0
|
||||
0x454949: call 0x42983c
|
||||
0x45494e: fstp xword ptr [ebp - 0x28]
|
||||
0x454951: wait
|
||||
0x454952: fld xword ptr [ebp + 8]
|
||||
0x454955: fcomp dword ptr [0x454d78] ; f32=0.0
|
||||
0x45495b: fnstsw ax
|
||||
0x45495d: sahf
|
||||
0x45495e: je 0x4549b7
|
||||
0x454960: fld xword ptr [ebp + 8]
|
||||
0x454963: fabs
|
||||
0x454965: fld xword ptr [ebp - 0x28]
|
||||
0x454968: faddp st(1)
|
||||
0x45496a: add esp, -0xc
|
||||
0x45496d: fstp xword ptr [esp]
|
||||
0x454970: wait
|
||||
0x454971: lea edx, [ebp - 0x14]
|
||||
0x454974: mov eax, 0x454d84 ; str='0.0#########'
|
||||
0x454979: call 0x40a19c
|
||||
0x45497e: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454981: push eax
|
||||
0x454982: lea eax, [ebp - 0x38]
|
||||
0x454985: push eax
|
||||
0x454986: call 0x453e4c
|
||||
0x45498b: mov edx, dword ptr [ebp - 0x38]
|
||||
0x45498e: lea eax, [ebp - 0x14]
|
||||
0x454991: call 0x4045bc
|
||||
0x454996: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454999: push eax
|
||||
0x45499a: push 0x454d74
|
||||
0x45499f: call 0x453640
|
||||
0x4549a4: test al, al
|
||||
0x4549a6: jne 0x4549e4
|
||||
0x4549a8: lea eax, [ebp - 0x14]
|
||||
0x4549ab: mov edx, 0x454d9c ; str='.0'
|
||||
0x4549b0: call 0x4047e4
|
||||
0x4549b5: jmp 0x4549e4
|
||||
0x4549b7: xor eax, eax
|
||||
0x4549b9: mov dword ptr [ebp - 0x10], eax
|
||||
0x4549bc: mov dword ptr [ebp - 0xc], eax
|
||||
0x4549bf: mov word ptr [ebp - 8], ax
|
||||
0x4549c3: jmp 0x454cb4
|
||||
0x4549c8: mov edx, dword ptr [ebp - 0x14]
|
||||
0x4549cb: mov eax, 0x454da8 ; str=','
|
||||
0x4549d0: call 0x404b18
|
||||
0x4549d5: mov edx, eax
|
||||
0x4549d7: lea eax, [ebp - 0x14]
|
||||
0x4549da: mov ecx, 1
|
||||
0x4549df: call 0x404a74
|
||||
0x4549e4: mov edx, dword ptr [ebp - 0x14]
|
||||
0x4549e7: mov eax, 0x454da8 ; str=','
|
||||
0x4549ec: call 0x404b18
|
||||
0x4549f1: test eax, eax
|
||||
0x4549f3: jg 0x4549c8
|
||||
0x4549f5: mov edx, dword ptr [ebp - 0x14]
|
||||
0x4549f8: mov eax, 0x454d74 ; str='.'
|
||||
0x4549fd: call 0x404b18
|
||||
0x454a02: mov ebx, eax
|
||||
0x454a04: cmp dword ptr [ebp + 0x14], 0
|
||||
0x454a08: jne 0x454a49
|
||||
0x454a0a: lea eax, [ebp - 0x3c]
|
||||
0x454a0d: push eax
|
||||
0x454a0e: lea edx, [ebx + 1]
|
||||
0x454a11: mov ecx, 0xa
|
||||
0x454a16: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454a19: call 0x404a34
|
||||
0x454a1e: mov ecx, dword ptr [ebp - 0x3c]
|
||||
0x454a21: lea eax, [ebp - 0x1c]
|
||||
0x454a24: mov edx, 0x454db4 ; str='0.'
|
||||
0x454a29: call 0x404828
|
||||
0x454a2e: lea eax, [ebp - 0x14]
|
||||
0x454a31: push eax
|
||||
0x454a32: mov ecx, ebx
|
||||
0x454a34: dec ecx
|
||||
0x454a35: mov edx, 1
|
||||
0x454a3a: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454a3d: call 0x404a34
|
||||
0x454a42: xor ebx, ebx
|
||||
0x454a44: jmp 0x454bde
|
||||
0x454a49: cmp dword ptr [ebp + 0x14], 0
|
||||
0x454a4d: jle 0x454abe
|
||||
0x454a4f: lea eax, [ebp - 0x40]
|
||||
0x454a52: push eax
|
||||
0x454a53: mov edx, dword ptr [ebp + 0x14]
|
||||
0x454a56: add edx, ebx
|
||||
0x454a58: inc edx
|
||||
0x454a59: mov ecx, 0xa
|
||||
0x454a5e: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454a61: call 0x404a34
|
||||
0x454a66: mov ecx, dword ptr [ebp - 0x40]
|
||||
0x454a69: lea eax, [ebp - 0x1c]
|
||||
0x454a6c: mov edx, 0x454db4 ; str='0.'
|
||||
0x454a71: call 0x404828
|
||||
0x454a76: lea eax, [ebp - 0x44]
|
||||
0x454a79: push eax
|
||||
0x454a7a: mov ecx, ebx
|
||||
0x454a7c: dec ecx
|
||||
0x454a7d: mov edx, 1
|
||||
0x454a82: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454a85: call 0x404a34
|
||||
0x454a8a: push dword ptr [ebp - 0x44]
|
||||
0x454a8d: push 0x454d74
|
||||
0x454a92: lea eax, [ebp - 0x48]
|
||||
0x454a95: push eax
|
||||
0x454a96: lea edx, [ebx + 1]
|
||||
0x454a99: mov ecx, dword ptr [ebp + 0x14]
|
||||
0x454a9c: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454a9f: call 0x404a34
|
||||
0x454aa4: push dword ptr [ebp - 0x48]
|
||||
0x454aa7: lea eax, [ebp - 0x14]
|
||||
0x454aaa: mov edx, 3
|
||||
0x454aaf: call 0x40489c
|
||||
0x454ab4: mov ebx, dword ptr [ebp + 0x14]
|
||||
0x454ab7: neg ebx
|
||||
0x454ab9: jmp 0x454bde
|
||||
0x454abe: mov eax, dword ptr [ebp + 0x14]
|
||||
0x454ac1: cdq
|
||||
0x454ac2: xor eax, edx
|
||||
0x454ac4: sub eax, edx
|
||||
0x454ac6: mov dword ptr [ebp + 0x14], eax
|
||||
0x454ac9: mov eax, ebx
|
||||
0x454acb: dec eax
|
||||
0x454acc: cmp eax, dword ptr [ebp + 0x14]
|
||||
0x454acf: jle 0x454b76
|
||||
0x454ad5: lea eax, [ebp - 0x18]
|
||||
0x454ad8: call 0x404524
|
||||
0x454add: mov esi, dword ptr [ebp + 0x14]
|
||||
0x454ae0: test esi, esi
|
||||
0x454ae2: jle 0x454af9
|
||||
0x454ae4: lea edx, [ebp - 0x18]
|
||||
0x454ae7: mov ecx, 1
|
||||
0x454aec: mov eax, 0x454dc0 ; str='0'
|
||||
0x454af1: call 0x404abc
|
||||
0x454af6: dec esi
|
||||
0x454af7: jne 0x454ae4
|
||||
0x454af9: lea eax, [ebp - 0x4c]
|
||||
0x454afc: push eax
|
||||
0x454afd: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454b00: push eax
|
||||
0x454b01: push 0x454d74
|
||||
0x454b06: lea eax, [ebp - 0x50]
|
||||
0x454b09: push eax
|
||||
0x454b0a: call 0x453a20
|
||||
0x454b0f: lea eax, [ebp - 0x50]
|
||||
0x454b12: push eax
|
||||
0x454b13: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454b16: push eax
|
||||
0x454b17: push 0x454d74
|
||||
0x454b1c: lea eax, [ebp - 0x54]
|
||||
0x454b1f: push eax
|
||||
0x454b20: call 0x453ab4
|
||||
0x454b25: mov edx, dword ptr [ebp - 0x54]
|
||||
0x454b28: pop eax
|
||||
0x454b29: call 0x4047e4
|
||||
0x454b2e: mov eax, dword ptr [ebp - 0x50]
|
||||
0x454b31: mov esi, ebx
|
||||
0x454b33: sub esi, dword ptr [ebp + 0x14]
|
||||
0x454b36: mov edx, esi
|
||||
0x454b38: mov ecx, 0xa
|
||||
0x454b3d: call 0x404a34
|
||||
0x454b42: mov ecx, dword ptr [ebp - 0x4c]
|
||||
0x454b45: lea eax, [ebp - 0x1c]
|
||||
0x454b48: mov edx, 0x454db4 ; str='0.'
|
||||
0x454b4d: call 0x404828
|
||||
0x454b52: lea eax, [ebp - 0x58]
|
||||
0x454b55: push eax
|
||||
0x454b56: mov ecx, esi
|
||||
0x454b58: dec ecx
|
||||
0x454b59: mov edx, 1
|
||||
0x454b5e: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454b61: call 0x404a34
|
||||
0x454b66: mov edx, dword ptr [ebp - 0x58]
|
||||
0x454b69: lea eax, [ebp - 0x14]
|
||||
0x454b6c: mov ecx, dword ptr [ebp - 0x18]
|
||||
0x454b6f: call 0x404828
|
||||
0x454b74: jmp 0x454bdb
|
||||
0x454b76: push 0x454db4
|
||||
0x454b7b: lea eax, [ebp - 0x5c]
|
||||
0x454b7e: push eax
|
||||
0x454b7f: mov ecx, dword ptr [ebp + 0x14]
|
||||
0x454b82: sub ecx, ebx
|
||||
0x454b84: dec ecx
|
||||
0x454b85: mov edx, 1
|
||||
0x454b8a: mov eax, 0x454dcc ; str='0000000000'
|
||||
0x454b8f: call 0x404a34
|
||||
0x454b94: push dword ptr [ebp - 0x5c]
|
||||
0x454b97: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454b9a: push eax
|
||||
0x454b9b: push 0x454d74
|
||||
0x454ba0: lea eax, [ebp - 0x60]
|
||||
0x454ba3: push eax
|
||||
0x454ba4: call 0x453a20
|
||||
0x454ba9: push dword ptr [ebp - 0x60]
|
||||
0x454bac: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454baf: push eax
|
||||
0x454bb0: push 0x454d74
|
||||
0x454bb5: lea eax, [ebp - 0x64]
|
||||
0x454bb8: push eax
|
||||
0x454bb9: call 0x453ab4
|
||||
0x454bbe: push dword ptr [ebp - 0x64]
|
||||
0x454bc1: lea eax, [ebp - 0x1c]
|
||||
0x454bc4: mov edx, 4
|
||||
0x454bc9: call 0x40489c
|
||||
0x454bce: lea eax, [ebp - 0x14]
|
||||
0x454bd1: mov edx, 0x454dc0 ; str='0'
|
||||
0x454bd6: call 0x4045bc
|
||||
0x454bdb: mov ebx, dword ptr [ebp + 0x14]
|
||||
0x454bde: mov eax, dword ptr [ebp - 0x1c]
|
||||
0x454be1: call 0x40a1f4
|
||||
0x454be6: add esp, -0xc
|
||||
0x454be9: fstp xword ptr [esp]
|
||||
0x454bec: wait
|
||||
0x454bed: call 0x4297f4
|
||||
0x454bf2: mov dword ptr [ebp - 0x34], eax
|
||||
0x454bf5: fild dword ptr [ebp - 0x34]
|
||||
0x454bf8: fstp xword ptr [ebp - 0x70]
|
||||
0x454bfb: wait
|
||||
0x454bfc: push 0x4002
|
||||
0x454c01: push 0xa0000000
|
||||
0x454c06: push 0
|
||||
0x454c08: mov dword ptr [ebp - 0x74], ebx
|
||||
0x454c0b: fild dword ptr [ebp - 0x74]
|
||||
0x454c0e: add esp, -0xc
|
||||
0x454c11: fstp xword ptr [esp]
|
||||
0x454c14: wait
|
||||
0x454c15: call 0x42983c
|
||||
0x454c1a: fld xword ptr [ebp - 0x70]
|
||||
0x454c1d: fmulp st(1)
|
||||
0x454c1f: fstp xword ptr [ebp - 0x28]
|
||||
0x454c22: wait
|
||||
0x454c23: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454c26: call 0x40a1f4
|
||||
0x454c2b: fld xword ptr [ebp - 0x28]
|
||||
0x454c2e: faddp st(1)
|
||||
0x454c30: fsubr dword ptr [0x454d78] ; f32=0.0
|
||||
0x454c36: lea eax, [ebp - 0x94]
|
||||
0x454c3c: call 0x405520
|
||||
0x454c41: push dword ptr [ebp - 0x88]
|
||||
0x454c47: push dword ptr [ebp - 0x8c]
|
||||
0x454c4d: push dword ptr [ebp - 0x90]
|
||||
0x454c53: push dword ptr [ebp - 0x94]
|
||||
0x454c59: mov eax, dword ptr [ebp - 0x14]
|
||||
0x454c5c: call 0x40a1f4
|
||||
0x454c61: fld xword ptr [ebp - 0x28]
|
||||
0x454c64: faddp st(1)
|
||||
0x454c66: lea eax, [ebp - 0xa4]
|
||||
0x454c6c: call 0x405520
|
||||
0x454c71: push dword ptr [ebp - 0x98]
|
||||
0x454c77: push dword ptr [ebp - 0x9c]
|
||||
0x454c7d: push dword ptr [ebp - 0xa0]
|
||||
0x454c83: push dword ptr [ebp - 0xa4]
|
||||
0x454c89: fld xword ptr [ebp + 8]
|
||||
0x454c8c: fcomp dword ptr [0x454d78] ; f32=0.0
|
||||
0x454c92: fnstsw ax
|
||||
0x454c94: sahf
|
||||
0x454c95: seta al
|
||||
0x454c98: push eax
|
||||
0x454c99: lea eax, [ebp - 0x84]
|
||||
0x454c9f: push eax
|
||||
0x454ca0: call 0x4535a0
|
||||
0x454ca5: lea eax, [ebp - 0x84]
|
||||
0x454cab: call 0x4054c4
|
||||
0x454cb0: fstp xword ptr [ebp - 0x10]
|
||||
0x454cb3: wait
|
||||
0x454cb4: xor eax, eax
|
||||
0x454cb6: pop edx
|
||||
0x454cb7: pop ecx
|
||||
0x454cb8: pop ecx
|
||||
0x454cb9: mov dword ptr fs:[eax], edx
|
||||
0x454cbc: push 0x454d06
|
||||
0x454cc1: lea eax, [ebp - 0xa4]
|
||||
0x454cc7: mov edx, dword ptr [0x40109c]
|
||||
0x454ccd: mov ecx, 3
|
||||
0x454cd2: call 0x405018
|
||||
0x454cd7: lea eax, [ebp - 0x64]
|
||||
0x454cda: mov edx, 0xc
|
||||
0x454cdf: call 0x404548
|
||||
0x454ce4: lea eax, [ebp - 0x30]
|
||||
0x454ce7: mov edx, 2
|
||||
0x454cec: call 0x404548
|
||||
0x454cf1: lea eax, [ebp - 0x1c]
|
||||
0x454cf4: mov edx, 3
|
||||
0x454cf9: call 0x404548
|
||||
0x454cfe: ret
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
0x4fe15b: mov eax, dword ptr [ebp - 8]
|
||||
0x4fe15e: mov al, byte ptr [eax]
|
||||
0x4fe160: sub al, 0x43
|
||||
0x4fe162: je 0x4fe16c
|
||||
0x4fe164: sub al, 2
|
||||
0x4fe166: je 0x4fe16c
|
||||
0x4fe168: sub al, 0xf
|
||||
0x4fe16a: jne 0x4fe1cc
|
||||
0x4fe16c: mov eax, dword ptr [ebx + 0x2f4]
|
||||
0x4fe172: mov edx, 0x4fe53c ; str='ITM_TYP'
|
||||
0x4fe177: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x4fe17c: dec eax
|
||||
0x4fe17d: sub eax, 0x77
|
||||
0x4fe180: jae 0x4fe1cc
|
||||
0x4fe182: lea ecx, [ebp - 0x110]
|
||||
0x4fe188: mov eax, dword ptr [ebx + 0x2f4]
|
||||
0x4fe18e: mov edx, 0x4fe53c ; str='ITM_TYP'
|
||||
0x4fe193: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4fe198: mov edx, dword ptr [ebp - 0x110]
|
||||
0x4fe19e: mov eax, dword ptr [esi + 0xd8]
|
||||
0x4fe1a4: mov ecx, dword ptr [eax]
|
||||
0x4fe1a6: call dword ptr [ecx + 0x54]
|
||||
0x4fe1a9: mov edx, eax
|
||||
0x4fe1ab: lea ecx, [ebp - 0x10c]
|
||||
0x4fe1b1: mov eax, dword ptr [esi + 0x90]
|
||||
0x4fe1b7: mov edi, dword ptr [eax]
|
||||
0x4fe1b9: call dword ptr [edi + 0xc]
|
||||
0x4fe1bc: mov edx, dword ptr [ebp - 0x10c]
|
||||
0x4fe1c2: mov eax, dword ptr [ebp + 0x14]
|
||||
0x4fe1c5: call 0x401220 ; rtl60!@System@@LStrAsg$qqrpvpxv
|
||||
0x4fe1ca: jmp 0x4fe1d4
|
||||
0x4fe1cc: mov eax, dword ptr [ebp + 0x14]
|
||||
0x4fe1cf: call 0x401210 ; rtl60!@System@@LStrClr$qqrpv
|
||||
+487
@@ -0,0 +1,487 @@
|
||||
0x456504: push ebp
|
||||
0x456505: mov ebp, esp
|
||||
0x456507: push ecx
|
||||
0x456508: mov ecx, 0x46
|
||||
0x45650d: push 0
|
||||
0x45650f: push 0
|
||||
0x456511: dec ecx
|
||||
0x456512: jne 0x45650d
|
||||
0x456514: push ecx
|
||||
0x456515: xchg dword ptr [ebp - 4], ecx
|
||||
0x456518: push ebx
|
||||
0x456519: push esi
|
||||
0x45651a: push edi
|
||||
0x45651b: mov byte ptr [ebp - 2], cl
|
||||
0x45651e: mov edi, edx
|
||||
0x456520: mov byte ptr [ebp - 1], al
|
||||
0x456523: mov ebx, dword ptr [ebp + 8]
|
||||
0x456526: xor eax, eax
|
||||
0x456528: push ebp
|
||||
0x456529: push 0x456efa
|
||||
0x45652e: push dword ptr fs:[eax]
|
||||
0x456531: mov dword ptr fs:[eax], esp
|
||||
0x456534: cmp byte ptr [ebp - 1], 0
|
||||
0x456538: je 0x456638
|
||||
0x45653e: mov esi, 1
|
||||
0x456543: lea eax, [ebx + 0x130]
|
||||
0x456549: mov dword ptr [ebp - 8], eax
|
||||
0x45654c: push esi
|
||||
0x45654d: push edi
|
||||
0x45654e: mov esi, 0x456f0c
|
||||
0x456553: lea edi, [ebp - 0x30]
|
||||
0x456556: mov ecx, 8
|
||||
0x45655b: rep movsd dword ptr es:[edi], dword ptr [esi]
|
||||
0x45655d: pop edi
|
||||
0x45655e: pop esi
|
||||
0x45655f: mov eax, esi
|
||||
0x456561: cmp eax, 0xff
|
||||
0x456566: ja 0x45656c
|
||||
0x456568: bts dword ptr [ebp - 0x30], eax
|
||||
0x45656c: mov eax, dword ptr [ebp + 0xc]
|
||||
0x45656f: cmp eax, 0xff
|
||||
0x456574: ja 0x45657a
|
||||
0x456576: bt dword ptr [ebp - 0x30], eax
|
||||
0x45657a: jae 0x4565f1
|
||||
0x45657c: lea eax, [ebp - 0x54]
|
||||
0x45657f: mov edx, dword ptr [ebp + 0x10]
|
||||
0x456582: mov cl, 0xfc
|
||||
0x456584: call 0x401368 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
|
||||
0x456589: push dword ptr [ebp - 0x48]
|
||||
0x45658c: push dword ptr [ebp - 0x4c]
|
||||
0x45658f: push dword ptr [ebp - 0x50]
|
||||
0x456592: push dword ptr [ebp - 0x54]
|
||||
0x456595: lea eax, [ebp - 0x64]
|
||||
0x456598: mov edx, esi
|
||||
0x45659a: mov cl, 0xfc
|
||||
0x45659c: call 0x401368 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
|
||||
0x4565a1: push dword ptr [ebp - 0x58]
|
||||
0x4565a4: push dword ptr [ebp - 0x5c]
|
||||
0x4565a7: push dword ptr [ebp - 0x60]
|
||||
0x4565aa: push dword ptr [ebp - 0x64]
|
||||
0x4565ad: cmp dword ptr [ebp + 0xc], 0
|
||||
0x4565b1: sete al
|
||||
0x4565b4: push eax
|
||||
0x4565b5: lea eax, [ebp - 0x44]
|
||||
0x4565b8: push eax
|
||||
0x4565b9: call 0x42b2f8 ; DP_COMMON!IIF
|
||||
0x4565be: lea eax, [ebp - 0x44]
|
||||
0x4565c1: call 0x401350 ; rtl60!@System@@VarToReal$qqrrx14System@Variant
|
||||
0x4565c6: call 0x401068 ; rtl60!@System@@ROUND$qqrv
|
||||
0x4565cb: mov edx, dword ptr [0x52e784]
|
||||
0x4565d1: mov ecx, dword ptr [edx + eax*4]
|
||||
0x4565d4: lea eax, [ebp - 0x34]
|
||||
0x4565d7: mov edx, 0x456f34 ; str='QTY'
|
||||
0x4565dc: call 0x401270 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x4565e1: mov edx, dword ptr [ebp - 0x34]
|
||||
0x4565e4: mov eax, edi
|
||||
0x4565e6: call 0x403ab0 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x4565eb: mov eax, dword ptr [ebp - 8]
|
||||
0x4565ee: fstp qword ptr [eax]
|
||||
0x4565f0: wait
|
||||
0x4565f1: inc esi
|
||||
0x4565f2: add dword ptr [ebp - 8], 8
|
||||
0x4565f6: cmp esi, 6
|
||||
0x4565f9: jne 0x45654c
|
||||
0x4565ff: push 0x456f40
|
||||
0x456604: lea eax, [ebp - 0x68]
|
||||
0x456607: mov dl, byte ptr [ebx + 0x14]
|
||||
0x45660a: call 0x401238 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
|
||||
0x45660f: mov eax, dword ptr [ebp - 0x68]
|
||||
0x456612: push eax
|
||||
0x456613: call 0x42b308 ; DP_COMMON!MPOS
|
||||
0x456618: test al, al
|
||||
0x45661a: je 0x45699f
|
||||
0x456620: mov edx, 0x456f54 ; str='PRPT'
|
||||
0x456625: mov eax, edi
|
||||
0x456627: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x45662c: mov word ptr [ebx + 0x41c], ax
|
||||
0x456633: jmp 0x45699f
|
||||
0x456638: lea ecx, [ebp - 0x16c]
|
||||
0x45663e: mov edx, 0x456f64 ; str='BDCODE'
|
||||
0x456643: mov eax, edi
|
||||
0x456645: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x45664a: mov edx, dword ptr [ebp - 0x16c]
|
||||
0x456650: lea eax, [ebp - 0x168]
|
||||
0x456656: mov ecx, 0xff
|
||||
0x45665b: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x456660: lea edx, [ebp - 0x168]
|
||||
0x456666: lea eax, [ebx + 0x13]
|
||||
0x456669: mov cl, 6
|
||||
0x45666b: call 0x4010b0
|
||||
0x456670: lea ecx, [ebp - 0x170]
|
||||
0x456676: mov edx, 0x456f74 ; str='CODE'
|
||||
0x45667b: mov eax, edi
|
||||
0x45667d: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x456682: mov edx, dword ptr [ebp - 0x170]
|
||||
0x456688: lea eax, [ebp - 0x168]
|
||||
0x45668e: mov ecx, 0xff
|
||||
0x456693: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x456698: lea edx, [ebp - 0x168]
|
||||
0x45669e: lea eax, [ebx + 0x1a]
|
||||
0x4566a1: mov cl, 6
|
||||
0x4566a3: call 0x4010b0
|
||||
0x4566a8: lea ecx, [ebp - 0x174]
|
||||
0x4566ae: mov edx, 0x456f84 ; str='BIMOK'
|
||||
0x4566b3: mov eax, edi
|
||||
0x4566b5: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4566ba: mov edx, dword ptr [ebp - 0x174]
|
||||
0x4566c0: lea eax, [ebp - 0x168]
|
||||
0x4566c6: mov ecx, 0xff
|
||||
0x4566cb: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x4566d0: lea edx, [ebp - 0x168]
|
||||
0x4566d6: lea eax, [ebx + 0x1d1]
|
||||
0x4566dc: mov cl, 1
|
||||
0x4566de: call 0x4010b0
|
||||
0x4566e3: lea eax, [ebp - 0x17c]
|
||||
0x4566e9: lea edx, [ebx + 0x1a]
|
||||
0x4566ec: call 0x401248
|
||||
0x4566f1: mov eax, dword ptr [ebp - 0x17c]
|
||||
0x4566f7: lea edx, [ebp - 0x178]
|
||||
0x4566fd: call 0x40177c ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x456702: mov eax, dword ptr [ebp - 0x178]
|
||||
0x456708: mov edx, 0x456f94 ; str='PR'
|
||||
0x45670d: call 0x401280 ; rtl60!@System@@LStrCmp$qqrv
|
||||
0x456712: jne 0x45671d
|
||||
0x456714: mov word ptr [ebx + 0x1d1], 0x2001
|
||||
0x45671d: cmp byte ptr [ebx + 0x14], 0x44
|
||||
0x456721: jne 0x456806
|
||||
0x456727: lea ecx, [ebp - 0x180]
|
||||
0x45672d: mov edx, 0x456fa0 ; str='SBMOK'
|
||||
0x456732: mov eax, edi
|
||||
0x456734: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x456739: mov edx, dword ptr [ebp - 0x180]
|
||||
0x45673f: lea eax, [ebp - 0x168]
|
||||
0x456745: mov ecx, 0xff
|
||||
0x45674a: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x45674f: lea edx, [ebp - 0x168]
|
||||
0x456755: lea eax, [ebx + 0x1d3]
|
||||
0x45675b: mov cl, 1
|
||||
0x45675d: call 0x4010b0
|
||||
0x456762: push 0x456fb0
|
||||
0x456767: lea eax, [ebp - 0x184]
|
||||
0x45676d: lea edx, [ebx + 0x1d3]
|
||||
0x456773: call 0x401248
|
||||
0x456778: mov eax, dword ptr [ebp - 0x184]
|
||||
0x45677e: push eax
|
||||
0x45677f: call 0x42b308 ; DP_COMMON!MPOS
|
||||
0x456784: test al, al
|
||||
0x456786: je 0x456806
|
||||
0x456788: push 0x456fbc
|
||||
0x45678d: lea ecx, [ebp - 0x188]
|
||||
0x456793: mov edx, 0x456fd0 ; str='GUN'
|
||||
0x456798: mov eax, edi
|
||||
0x45679a: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x45679f: mov eax, dword ptr [ebp - 0x188]
|
||||
0x4567a5: push eax
|
||||
0x4567a6: call 0x42b308 ; DP_COMMON!MPOS
|
||||
0x4567ab: test al, al
|
||||
0x4567ad: je 0x456806
|
||||
0x4567af: lea ecx, [ebp - 0x18c]
|
||||
0x4567b5: mov edx, 0x456fd0 ; str='GUN'
|
||||
0x4567ba: mov eax, edi
|
||||
0x4567bc: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4567c1: mov edx, dword ptr [ebp - 0x18c]
|
||||
0x4567c7: lea eax, [ebp - 0x168]
|
||||
0x4567cd: mov ecx, 0xff
|
||||
0x4567d2: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x4567d7: lea edx, [ebp - 0x168]
|
||||
0x4567dd: lea eax, [ebx + 0x1d5]
|
||||
0x4567e3: mov cl, 1
|
||||
0x4567e5: call 0x4010b0
|
||||
0x4567ea: mov word ptr [ebx + 0x1d9], 0x2001
|
||||
0x4567f3: lea eax, [ebx + 0x1d7]
|
||||
0x4567f9: lea edx, [ebx + 0x1d5]
|
||||
0x4567ff: mov cl, 1
|
||||
0x456801: call 0x4010b0
|
||||
0x456806: mov edx, 0x456fdc ; str='DEVD1'
|
||||
0x45680b: mov eax, edi
|
||||
0x45680d: call 0x403ac0 ; Apollo5D6!@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString
|
||||
0x456812: cmp ax, 1
|
||||
0x456816: sbb eax, eax
|
||||
0x456818: inc eax
|
||||
0x456819: mov edx, dword ptr [ebp + 0xc]
|
||||
0x45681c: mov byte ptr [ebx + edx + 0x1da], al
|
||||
0x456823: lea ecx, [ebp - 0x190]
|
||||
0x456829: mov edx, 0x456fec ; str='EQCODE'
|
||||
0x45682e: mov eax, edi
|
||||
0x456830: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x456835: mov edx, dword ptr [ebp - 0x190]
|
||||
0x45683b: lea eax, [ebp - 0x168]
|
||||
0x456841: mov ecx, 0xff
|
||||
0x456846: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x45684b: lea edx, [ebp - 0x168]
|
||||
0x456851: lea eax, [ebx + 0x2d]
|
||||
0x456854: mov cl, 0xb
|
||||
0x456856: call 0x4010b0
|
||||
0x45685b: mov edx, 0x456ffc ; str='QTY1'
|
||||
0x456860: mov eax, edi
|
||||
0x456862: call 0x403ab0 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x456867: mov eax, dword ptr [ebp + 0xc]
|
||||
0x45686a: fstp qword ptr [ebx + eax*8 + 0x128]
|
||||
0x456871: wait
|
||||
0x456872: lea ecx, [ebp - 0x194]
|
||||
0x456878: mov edx, 0x45700c ; str='X_CODE'
|
||||
0x45687d: mov eax, edi
|
||||
0x45687f: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x456884: mov edx, dword ptr [ebp - 0x194]
|
||||
0x45688a: lea eax, [ebp - 0x168]
|
||||
0x456890: mov ecx, 0xff
|
||||
0x456895: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x45689a: lea edx, [ebp - 0x168]
|
||||
0x4568a0: lea eax, [ebx + 0x408]
|
||||
0x4568a6: mov cl, 6
|
||||
0x4568a8: call 0x4010b0
|
||||
0x4568ad: push 0x456f40
|
||||
0x4568b2: lea eax, [ebp - 0x198]
|
||||
0x4568b8: mov dl, byte ptr [ebx + 0x1b]
|
||||
0x4568bb: call 0x401238 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
|
||||
0x4568c0: mov eax, dword ptr [ebp - 0x198]
|
||||
0x4568c6: push eax
|
||||
0x4568c7: call 0x42b308 ; DP_COMMON!MPOS
|
||||
0x4568cc: test al, al
|
||||
0x4568ce: je 0x4568e3
|
||||
0x4568d0: mov edx, 0x456f54 ; str='PRPT'
|
||||
0x4568d5: mov eax, edi
|
||||
0x4568d7: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x4568dc: mov word ptr [ebx + 0x41c], ax
|
||||
0x4568e3: mov al, byte ptr [ebx + 0x14]
|
||||
0x4568e6: sub al, 0x44
|
||||
0x4568e8: jne 0x456977
|
||||
0x4568ee: lea ecx, [ebp - 0x1a0]
|
||||
0x4568f4: mov edx, 0x45701c ; str='SPRPT'
|
||||
0x4568f9: mov eax, edi
|
||||
0x4568fb: call 0x403ad0 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x456900: mov edx, dword ptr [ebp - 0x1a0]
|
||||
0x456906: lea ecx, [ebp - 0x19c]
|
||||
0x45690c: mov ax, word ptr [ebx + 0x41c]
|
||||
0x456913: call 0x4614b8
|
||||
0x456918: mov edx, dword ptr [ebp - 0x19c]
|
||||
0x45691e: lea eax, [ebp - 0x168]
|
||||
0x456924: mov ecx, 0xff
|
||||
0x456929: call 0x401258 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x45692e: lea edx, [ebp - 0x168]
|
||||
0x456934: lea eax, [ebx + 0x40f]
|
||||
0x45693a: mov cl, 0xb
|
||||
0x45693c: call 0x4010b0
|
||||
0x456941: push 0x45702c
|
||||
0x456946: lea eax, [ebp - 0x1a4]
|
||||
0x45694c: mov dl, byte ptr [ebx + 0x1b]
|
||||
0x45694f: call 0x401238 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
|
||||
0x456954: mov eax, dword ptr [ebp - 0x1a4]
|
||||
0x45695a: push eax
|
||||
0x45695b: call 0x42b308 ; DP_COMMON!MPOS
|
||||
0x456960: test al, al
|
||||
0x456962: je 0x456977
|
||||
0x456964: mov edx, 0x457038 ; str='TPRPT'
|
||||
0x456969: mov eax, edi
|
||||
0x45696b: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x456970: mov word ptr [ebx + 0x41e], ax
|
||||
0x456977: cmp byte ptr [ebx + 0x1b], 0x54
|
||||
0x45697b: jne 0x456998
|
||||
0x45697d: mov edx, 0x457048 ; str='S_RATE'
|
||||
0x456982: mov eax, edi
|
||||
0x456984: call 0x403ac0 ; Apollo5D6!@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString
|
||||
0x456989: cmp ax, 1
|
||||
0x45698d: sbb eax, eax
|
||||
0x45698f: inc eax
|
||||
0x456990: mov byte ptr [ebx + 0x180], al
|
||||
0x456996: jmp 0x45699f
|
||||
0x456998: mov byte ptr [ebx + 0x180], 0
|
||||
0x45699f: mov edx, 0x457058 ; str='EXIST1'
|
||||
0x4569a4: mov eax, edi
|
||||
0x4569a6: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x4569ab: mov dword ptr [ebx + 0x1e0], eax
|
||||
0x4569b1: mov edx, 0x457068 ; str='SORTCODE'
|
||||
0x4569b6: mov eax, edi
|
||||
0x4569b8: call 0x403ab0 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x4569bd: fstp qword ptr [ebx + 0x1e8]
|
||||
0x4569c3: wait
|
||||
0x4569c4: mov eax, edi
|
||||
0x4569c6: call 0x403b70 ; Apollo5D6!@Apodset@TApolloTable@GetSXRecno$qqrv
|
||||
0x4569cb: mov dword ptr [ebx + 0x1f4], eax
|
||||
0x4569d1: mov word ptr [ebx + 0x432], 0
|
||||
0x4569da: cmp byte ptr [ebp - 1], 0
|
||||
0x4569de: je 0x4569f3
|
||||
0x4569e0: mov edx, 0x45707c ; str='ITM_TYP'
|
||||
0x4569e5: mov eax, edi
|
||||
0x4569e7: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x4569ec: mov word ptr [ebx + 0x452], ax
|
||||
0x4569f3: lea eax, [ebp - 0x1ac]
|
||||
0x4569f9: lea edx, [ebx + 0x1a]
|
||||
0x4569fc: call 0x401248
|
||||
0x456a01: mov eax, dword ptr [ebp - 0x1ac]
|
||||
0x456a07: lea edx, [ebp - 0x1a8]
|
||||
0x456a0d: call 0x40177c ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x456a12: mov eax, dword ptr [ebp - 0x1a8]
|
||||
0x456a18: mov edx, 0x456f94 ; str='PR'
|
||||
0x456a1d: call 0x401280 ; rtl60!@System@@LStrCmp$qqrv
|
||||
0x456a22: je 0x456a55
|
||||
0x456a24: lea eax, [ebp - 0x1b4]
|
||||
0x456a2a: lea edx, [ebx + 0x1a]
|
||||
0x456a2d: call 0x401248
|
||||
0x456a32: mov eax, dword ptr [ebp - 0x1b4]
|
||||
0x456a38: lea edx, [ebp - 0x1b0]
|
||||
0x456a3e: call 0x40177c ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x456a43: mov eax, dword ptr [ebp - 0x1b0]
|
||||
0x456a49: mov edx, 0x45708c ; str='RR'
|
||||
0x456a4e: call 0x401280 ; rtl60!@System@@LStrCmp$qqrv
|
||||
0x456a53: jne 0x456ad3
|
||||
0x456a55: mov edx, 0x457098 ; str='PRIN'
|
||||
0x456a5a: mov eax, edi
|
||||
0x456a5c: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x456a61: mov word ptr [ebx + 0x420], ax
|
||||
0x456a68: mov edx, 0x4570a8 ; str='PROUT'
|
||||
0x456a6d: mov eax, edi
|
||||
0x456a6f: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x456a74: mov word ptr [ebx + 0x422], ax
|
||||
0x456a7b: cmp byte ptr [ebp - 1], 0
|
||||
0x456a7f: je 0x456aad
|
||||
0x456a81: mov edx, 0x4570b8 ; str='FRM_NH'
|
||||
0x456a86: mov eax, edi
|
||||
0x456a88: call 0x403ac0 ; Apollo5D6!@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString
|
||||
0x456a8d: cmp ax, 1
|
||||
0x456a91: sbb eax, eax
|
||||
0x456a93: inc eax
|
||||
0x456a94: mov byte ptr [ebx + 0x430], al
|
||||
0x456a9a: mov edx, 0x4570c8 ; str='RCU'
|
||||
0x456a9f: mov eax, edi
|
||||
0x456aa1: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x456aa6: mov word ptr [ebx + 0x432], ax
|
||||
0x456aad: cmp word ptr [ebx + 0x420], 0
|
||||
0x456ab5: jne 0x456ac0
|
||||
0x456ab7: mov word ptr [ebx + 0x420], 4
|
||||
0x456ac0: cmp word ptr [ebx + 0x422], 0
|
||||
0x456ac8: jne 0x456ad3
|
||||
0x456aca: mov word ptr [ebx + 0x422], 4
|
||||
0x456ad3: mov edx, 0x4570d4 ; str='RATE'
|
||||
0x456ad8: mov eax, edi
|
||||
0x456ada: call 0x403ab0 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x456adf: fstp qword ptr [ebx + 0x428]
|
||||
0x456ae5: wait
|
||||
0x456ae6: mov edx, 0x4570e4 ; str='KWNGP'
|
||||
0x456aeb: mov eax, edi
|
||||
0x456aed: call 0x403ab8 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x456af2: mov word ptr [ebx + 0x434], ax
|
||||
0x456af9: mov edx, 0x4570f4 ; str='BL_AMT'
|
||||
0x456afe: mov eax, edi
|
||||
0x456b00: call 0x403ac0 ; Apollo5D6!@Apodset@TApolloTable@GetLogical$qqr17System@AnsiString
|
||||
0x456b05: cmp ax, 1
|
||||
0x456b09: sbb eax, eax
|
||||
0x456b0b: inc eax
|
||||
0x456b0c: mov byte ptr [ebx + 0x447], al
|
||||
0x456b12: mov eax, dword ptr [ebx + 0x1e0]
|
||||
0x456b18: sub eax, 1
|
||||
0x456b1b: je 0x456b26
|
||||
0x456b1d: sub eax, 2
|
||||
0x456b20: jne 0x456bf8
|
||||
0x456b26: lea ecx, [ebp - 0x1c4]
|
||||
0x456b2c: mov edx, 0x457104 ; str='NAME1'
|
||||
0x456b31: mov eax, edi
|
||||
0x456b33: call 0x403578 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
|
||||
0x456b38: lea edx, [ebp - 0x1c4]
|
||||
0x456b3e: lea eax, [ebp - 0x168]
|
||||
0x456b44: call 0x401358 ; rtl60!@System@@VarToPStr$qqrpvrx14System@Variant
|
||||
0x456b49: lea edx, [ebp - 0x168]
|
||||
0x456b4f: lea eax, [ebx + 0x4b]
|
||||
0x456b52: mov cl, 0x32
|
||||
0x456b54: call 0x4010b0
|
||||
0x456b59: lea ecx, [ebp - 0x1d4]
|
||||
0x456b5f: mov edx, 0x457114 ; str='NAME2'
|
||||
0x456b64: mov eax, edi
|
||||
0x456b66: call 0x403578 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
|
||||
0x456b6b: lea edx, [ebp - 0x1d4]
|
||||
0x456b71: lea eax, [ebp - 0x168]
|
||||
0x456b77: call 0x401358 ; rtl60!@System@@VarToPStr$qqrpvrx14System@Variant
|
||||
0x456b7c: lea edx, [ebp - 0x168]
|
||||
0x456b82: lea eax, [ebx + 0x7e]
|
||||
0x456b85: mov cl, 0x32
|
||||
0x456b87: call 0x4010b0
|
||||
0x456b8c: lea ecx, [ebp - 0x1e4]
|
||||
0x456b92: mov edx, 0x457124 ; str='SIZE1'
|
||||
0x456b97: mov eax, edi
|
||||
0x456b99: call 0x403578 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
|
||||
0x456b9e: lea edx, [ebp - 0x1e4]
|
||||
0x456ba4: lea eax, [ebp - 0x168]
|
||||
0x456baa: call 0x401358 ; rtl60!@System@@VarToPStr$qqrpvrx14System@Variant
|
||||
0x456baf: lea edx, [ebp - 0x168]
|
||||
0x456bb5: lea eax, [ebx + 0xb1]
|
||||
0x456bbb: mov cl, 0x3c
|
||||
0x456bbd: call 0x4010b0
|
||||
0x456bc2: lea ecx, [ebp - 0x1f4]
|
||||
0x456bc8: mov edx, 0x457134 ; str='SIZE2'
|
||||
0x456bcd: mov eax, edi
|
||||
0x456bcf: call 0x403578 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
|
||||
0x456bd4: lea edx, [ebp - 0x1f4]
|
||||
0x456bda: lea eax, [ebp - 0x168]
|
||||
0x456be0: call 0x401358 ; rtl60!@System@@VarToPStr$qqrpvrx14System@Variant
|
||||
0x456be5: lea edx, [ebp - 0x168]
|
||||
0x456beb: lea eax, [ebx + 0xee]
|
||||
0x456bf1: mov cl, 0x3c
|
||||
0x456bf3: call 0x4010b0
|
||||
0x456bf8: mov eax, dword ptr [ebx + 0x1e0]
|
||||
0x456bfe: add eax, -2
|
||||
0x456c01: sub eax, 2
|
||||
0x456c04: jae 0x456c3c
|
||||
0x456c06: lea ecx, [ebp - 0x204]
|
||||
0x456c0c: mov edx, 0x457144 ; str='UNIT1'
|
||||
0x456c11: mov eax, edi
|
||||
0x456c13: call 0x403578 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
|
||||
0x456c18: lea edx, [ebp - 0x204]
|
||||
0x456c1e: lea eax, [ebp - 0x168]
|
||||
0x456c24: call 0x401358 ; rtl60!@System@@VarToPStr$qqrpvrx14System@Variant
|
||||
0x456c29: lea edx, [ebp - 0x168]
|
||||
0x456c2f: lea eax, [ebx + 0x1c6]
|
||||
0x456c35: mov cl, 0xa
|
||||
0x456c37: call 0x4010b0
|
||||
0x456c3c: mov esi, 1
|
||||
0x456c41: push esi
|
||||
0x456c42: push edi
|
||||
0x456c43: mov esi, 0x456f0c
|
||||
0x456c48: lea edi, [ebp - 0x30]
|
||||
0x456c4b: mov ecx, 8
|
||||
0x456c50: rep movsd dword ptr es:[edi], dword ptr [esi]
|
||||
0x456c52: pop edi
|
||||
0x456c53: pop esi
|
||||
0x456c54: mov eax, esi
|
||||
0x456c56: cmp eax, 0xff
|
||||
0x456c5b: ja 0x456c61
|
||||
0x456c5d: bts dword ptr [ebp - 0x30], eax
|
||||
0x456c61: mov eax, dword ptr [ebp + 0xc]
|
||||
0x456c64: cmp eax, 0xff
|
||||
0x456c69: ja 0x456c6f
|
||||
0x456c6b: bt dword ptr [ebp - 0x30], eax
|
||||
0x456c6f: jae 0x456cc0
|
||||
0x456c71: cmp byte ptr [ebp - 1], 0
|
||||
0x456c75: je 0x456c81
|
||||
0x456c77: cmp byte ptr [ebx + 0x1b], 0x51
|
||||
0x456c7b: jne 0x456c81
|
||||
0x456c7d: mov byte ptr [ebp + 0x1c], 1
|
||||
0x456c81: cmp byte ptr [ebp + 0x1c], 0
|
||||
0x456c85: je 0x456c9c
|
||||
0x456c87: push esi
|
||||
0x456c88: cmp byte ptr [ebx + 0x1b], 0x41
|
||||
0x456c8c: sete al
|
||||
0x456c8f: push eax
|
||||
0x456c90: mov eax, ebx
|
||||
0x456c92: mov ecx, dword ptr [ebp + 0x14]
|
||||
0x456c95: mov edx, edi
|
||||
0x456c97: call 0x433490
|
||||
0x456c9c: push esi
|
||||
0x456c9d: mov al, byte ptr [ebp - 2]
|
||||
0x456ca0: push eax
|
||||
0x456ca1: mov al, byte ptr [ebp + 0x1c]
|
||||
0x456ca4: xor al, 1
|
||||
0x456ca6: push eax
|
||||
0x456ca7: mov al, byte ptr [ebp - 1]
|
||||
0x456caa: push eax
|
||||
0x456cab: movzx eax, word ptr [ebx + 0x432]
|
||||
0x456cb2: push eax
|
||||
0x456cb3: mov eax, ebx
|
||||
0x456cb5: mov ecx, dword ptr [ebp + 0x14]
|
||||
0x456cb8: mov edx, dword ptr [ebp + 0x18]
|
||||
0x456cbb: call 0x44019c
|
||||
0x456cc0: inc esi
|
||||
0x456cc1: cmp esi, 6
|
||||
0x456cc4: jne 0x456c41
|
||||
0x456cca: cmp byte ptr [ebp - 1], 0
|
||||
0x456cce: jne 0x456e93
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
0x4c27f8: push ebp
|
||||
0x4c27f9: mov ebp, esp
|
||||
0x4c27fb: mov dword ptr [0x57a4e0], 1
|
||||
0x4c2805: mov eax, dword ptr [ebp + 8]
|
||||
0x4c2808: call 0x4c1904
|
||||
0x4c280d: pop ebp
|
||||
0x4c280e: ret 4
|
||||
0x4c2811: lea eax, [eax]
|
||||
0x4c2814: push ebp
|
||||
0x4c2815: mov ebp, esp
|
||||
0x4c2817: mov dword ptr [0x57a4e0], 2
|
||||
0x4c2821: mov eax, dword ptr [ebp + 8]
|
||||
0x4c2824: call 0x4c1904
|
||||
0x4c2829: pop ebp
|
||||
0x4c282a: ret 4
|
||||
0x4c282d: lea eax, [eax]
|
||||
+1128
File diff suppressed because it is too large
Load Diff
+746
@@ -0,0 +1,746 @@
|
||||
0x4c3cd0: push ebp
|
||||
0x4c3cd1: mov ebp, esp
|
||||
0x4c3cd3: push ecx
|
||||
0x4c3cd4: mov ecx, 0x53
|
||||
0x4c3cd9: push 0
|
||||
0x4c3cdb: push 0
|
||||
0x4c3cdd: dec ecx
|
||||
0x4c3cde: jne 0x4c3cd9
|
||||
0x4c3ce0: xchg dword ptr [ebp - 4], ecx
|
||||
0x4c3ce3: push ebx
|
||||
0x4c3ce4: push esi
|
||||
0x4c3ce5: push edi
|
||||
0x4c3ce6: mov ebx, ecx
|
||||
0x4c3ce8: mov dword ptr [ebp - 0xc], eax
|
||||
0x4c3ceb: xor eax, eax
|
||||
0x4c3ced: push ebp
|
||||
0x4c3cee: push 0x4c4912
|
||||
0x4c3cf3: push dword ptr fs:[eax]
|
||||
0x4c3cf6: mov dword ptr fs:[eax], esp
|
||||
0x4c3cf9: lea ecx, [ebp - 0x12c]
|
||||
0x4c3cff: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3d02: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c3d08: mov edx, 0x4c492c ; str='BDCODE1'
|
||||
0x4c3d0d: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c3d12: mov edx, dword ptr [ebp - 0x12c]
|
||||
0x4c3d18: lea eax, [ebp - 0x128]
|
||||
0x4c3d1e: mov ecx, 0xff
|
||||
0x4c3d23: call 0x401228 ; rtl60!@System@@LStrToString$qqrv
|
||||
0x4c3d28: lea edx, [ebp - 0x128]
|
||||
0x4c3d2e: lea eax, [ebp - 7]
|
||||
0x4c3d31: mov cl, 6
|
||||
0x4c3d33: call 0x4010b0
|
||||
0x4c3d38: cmp dword ptr [0x57a4e0], 2
|
||||
0x4c3d3f: jne 0x4c3d5a
|
||||
0x4c3d41: mov al, byte ptr [ebp - 6]
|
||||
0x4c3d44: sub al, 0x43
|
||||
0x4c3d46: je 0x4c3d4c
|
||||
0x4c3d48: sub al, 2
|
||||
0x4c3d4a: jne 0x4c3d5a
|
||||
0x4c3d4c: cmp byte ptr [ebp - 5], 0x31
|
||||
0x4c3d50: jne 0x4c3d5a
|
||||
0x4c3d52: mov byte ptr [ebx], 0
|
||||
0x4c3d55: jmp 0x4c47f0
|
||||
0x4c3d5a: mov al, byte ptr [ebp - 6]
|
||||
0x4c3d5d: sub al, 0x43
|
||||
0x4c3d5f: je 0x4c3d65
|
||||
0x4c3d61: sub al, 2
|
||||
0x4c3d63: jne 0x4c3d8f
|
||||
0x4c3d65: mov eax, dword ptr [0x4ebf3c]
|
||||
0x4c3d6a: mov eax, dword ptr [eax]
|
||||
0x4c3d6c: cmp byte ptr [eax + 0x1759], 0
|
||||
0x4c3d73: je 0x4c3d8f
|
||||
0x4c3d75: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3d78: mov eax, dword ptr [eax + 0x2fc]
|
||||
0x4c3d7e: call 0x402c18 ; dclhrp60!@Hreport@THRPrs@GetisRepeatToEOP$qqrv
|
||||
0x4c3d83: test al, al
|
||||
0x4c3d85: jne 0x4c3d8f
|
||||
0x4c3d87: mov byte ptr [ebx], 0
|
||||
0x4c3d8a: jmp 0x4c47f0
|
||||
0x4c3d8f: cmp byte ptr [ebp - 6], 0x3a
|
||||
0x4c3d93: jne 0x4c3e21
|
||||
0x4c3d99: jmp 0x4c3dae
|
||||
0x4c3d9b: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3d9e: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c3da4: mov edx, 1
|
||||
0x4c3da9: call 0x402da8 ; Apollo5D6!@Apodset@TApolloTable@Skip$qqri
|
||||
0x4c3dae: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3db1: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c3db7: mov edx, dword ptr [eax]
|
||||
0x4c3db9: call dword ptr [edx + 0x270]
|
||||
0x4c3dbf: test al, al
|
||||
0x4c3dc1: jne 0x4c3de7
|
||||
0x4c3dc3: lea ecx, [ebp - 0x130]
|
||||
0x4c3dc9: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3dcc: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c3dd2: mov edx, 0x4c492c ; str='BDCODE1'
|
||||
0x4c3dd7: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c3ddc: mov eax, dword ptr [ebp - 0x130]
|
||||
0x4c3de2: cmp byte ptr [eax], 0x3a
|
||||
0x4c3de5: je 0x4c3d9b
|
||||
0x4c3de7: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3dea: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c3df0: mov edx, dword ptr [eax]
|
||||
0x4c3df2: call dword ptr [edx + 0x270]
|
||||
0x4c3df8: test al, al
|
||||
0x4c3dfa: je 0x4c3e11
|
||||
0x4c3dfc: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3dff: mov eax, dword ptr [eax + 0x2fc]
|
||||
0x4c3e05: call 0x402c18 ; dclhrp60!@Hreport@THRPrs@GetisRepeatToEOP$qqrv
|
||||
0x4c3e0a: mov byte ptr [ebx], al
|
||||
0x4c3e0c: jmp 0x4c47f0
|
||||
0x4c3e11: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3e14: mov eax, dword ptr [eax + 0x2fc]
|
||||
0x4c3e1a: call 0x402c00 ; dclhrp60!@Hreport@THRPrs@PageSkip$qqrv
|
||||
0x4c3e1f: jmp 0x4c3e24
|
||||
0x4c3e21: mov byte ptr [ebx], 1
|
||||
0x4c3e24: mov al, byte ptr [ebp - 6]
|
||||
0x4c3e27: sub al, 0x43
|
||||
0x4c3e29: je 0x4c3e37
|
||||
0x4c3e2b: sub al, 2
|
||||
0x4c3e2d: je 0x4c3e37
|
||||
0x4c3e2f: sub al, 0xf
|
||||
0x4c3e31: jne 0x4c3f3c
|
||||
0x4c3e37: lea eax, [ebp - 0x134]
|
||||
0x4c3e3d: mov dl, byte ptr [ebp - 5]
|
||||
0x4c3e40: call 0x401208 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
|
||||
0x4c3e45: mov eax, dword ptr [ebp - 0x134]
|
||||
0x4c3e4b: push eax
|
||||
0x4c3e4c: lea ecx, [ebp - 0x138]
|
||||
0x4c3e52: mov eax, dword ptr [0x4ebf3c]
|
||||
0x4c3e57: mov eax, dword ptr [eax]
|
||||
0x4c3e59: movsx eax, byte ptr [eax + 0x1741]
|
||||
0x4c3e60: inc eax
|
||||
0x4c3e61: mov edx, 1
|
||||
0x4c3e66: call 0x40172c ; rtl60!@Sysutils@IntToHex$qqrii
|
||||
0x4c3e6b: mov edx, dword ptr [ebp - 0x138]
|
||||
0x4c3e71: pop eax
|
||||
0x4c3e72: call 0x401250 ; rtl60!@System@@LStrCmp$qqrv
|
||||
0x4c3e77: jb 0x4c3f3c
|
||||
0x4c3e7d: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3e80: mov eax, dword ptr [eax + 0x310]
|
||||
0x4c3e86: mov ebx, dword ptr [eax + 0x68]
|
||||
0x4c3e89: mov eax, ebx
|
||||
0x4c3e8b: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3e90: mov edx, eax
|
||||
0x4c3e92: or dl, byte ptr [0x4c4934]
|
||||
0x4c3e98: mov eax, ebx
|
||||
0x4c3e9a: call 0x401f98
|
||||
0x4c3e9f: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3ea2: mov eax, dword ptr [eax + 0x310]
|
||||
0x4c3ea8: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3eab: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3eb0: mov edx, eax
|
||||
0x4c3eb2: or dl, byte ptr [0x4c4934]
|
||||
0x4c3eb8: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3ebb: mov eax, dword ptr [eax + 0x30c]
|
||||
0x4c3ec1: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3ec4: call 0x401f98
|
||||
0x4c3ec9: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3ecc: mov eax, dword ptr [eax + 0x310]
|
||||
0x4c3ed2: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3ed5: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3eda: mov edx, eax
|
||||
0x4c3edc: or dl, byte ptr [0x4c4934]
|
||||
0x4c3ee2: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3ee5: mov eax, dword ptr [eax + 0x320]
|
||||
0x4c3eeb: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3eee: call 0x401f98
|
||||
0x4c3ef3: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3ef6: mov eax, dword ptr [eax + 0x324]
|
||||
0x4c3efc: mov ebx, dword ptr [eax + 0x68]
|
||||
0x4c3eff: mov eax, ebx
|
||||
0x4c3f01: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3f06: mov edx, eax
|
||||
0x4c3f08: or dl, byte ptr [0x4c4934]
|
||||
0x4c3f0e: mov eax, ebx
|
||||
0x4c3f10: call 0x401f98
|
||||
0x4c3f15: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3f18: mov eax, dword ptr [eax + 0x328]
|
||||
0x4c3f1e: mov ebx, dword ptr [eax + 0x68]
|
||||
0x4c3f21: mov eax, ebx
|
||||
0x4c3f23: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3f28: mov edx, eax
|
||||
0x4c3f2a: or dl, byte ptr [0x4c4934]
|
||||
0x4c3f30: mov eax, ebx
|
||||
0x4c3f32: call 0x401f98
|
||||
0x4c3f37: jmp 0x4c4000
|
||||
0x4c3f3c: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3f3f: mov eax, dword ptr [eax + 0x310]
|
||||
0x4c3f45: mov ebx, dword ptr [eax + 0x68]
|
||||
0x4c3f48: mov eax, ebx
|
||||
0x4c3f4a: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3f4f: mov dl, byte ptr [0x4c4934]
|
||||
0x4c3f55: not edx
|
||||
0x4c3f57: and dl, al
|
||||
0x4c3f59: mov eax, ebx
|
||||
0x4c3f5b: call 0x401f98
|
||||
0x4c3f60: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3f63: mov eax, dword ptr [eax + 0x310]
|
||||
0x4c3f69: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3f6c: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3f71: mov dl, byte ptr [0x4c4934]
|
||||
0x4c3f77: not edx
|
||||
0x4c3f79: and dl, al
|
||||
0x4c3f7b: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3f7e: mov eax, dword ptr [eax + 0x30c]
|
||||
0x4c3f84: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3f87: call 0x401f98
|
||||
0x4c3f8c: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3f8f: mov eax, dword ptr [eax + 0x310]
|
||||
0x4c3f95: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3f98: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3f9d: mov dl, byte ptr [0x4c4934]
|
||||
0x4c3fa3: not edx
|
||||
0x4c3fa5: and dl, al
|
||||
0x4c3fa7: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3faa: mov eax, dword ptr [eax + 0x320]
|
||||
0x4c3fb0: mov eax, dword ptr [eax + 0x68]
|
||||
0x4c3fb3: call 0x401f98
|
||||
0x4c3fb8: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3fbb: mov eax, dword ptr [eax + 0x324]
|
||||
0x4c3fc1: mov ebx, dword ptr [eax + 0x68]
|
||||
0x4c3fc4: mov eax, ebx
|
||||
0x4c3fc6: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3fcb: mov dl, byte ptr [0x4c4934]
|
||||
0x4c3fd1: not edx
|
||||
0x4c3fd3: and dl, al
|
||||
0x4c3fd5: mov eax, ebx
|
||||
0x4c3fd7: call 0x401f98
|
||||
0x4c3fdc: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c3fdf: mov eax, dword ptr [eax + 0x328]
|
||||
0x4c3fe5: mov ebx, dword ptr [eax + 0x68]
|
||||
0x4c3fe8: mov eax, ebx
|
||||
0x4c3fea: call 0x401f90 ; vcl60!@Graphics@TFont@GetStyle$qqrv
|
||||
0x4c3fef: mov dl, byte ptr [0x4c4934]
|
||||
0x4c3ff5: not edx
|
||||
0x4c3ff7: and dl, al
|
||||
0x4c3ff9: mov eax, ebx
|
||||
0x4c3ffb: call 0x401f98
|
||||
0x4c4000: push ebp
|
||||
0x4c4001: lea ecx, [ebp - 0x140]
|
||||
0x4c4007: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c400a: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4010: mov edx, 0x4c4940 ; str='SIZE1'
|
||||
0x4c4015: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c401a: mov eax, dword ptr [ebp - 0x140]
|
||||
0x4c4020: lea edx, [ebp - 0x13c]
|
||||
0x4c4026: call 0x401714 ; rtl60!@Sysutils@TrimRight$qqrx17System@AnsiString
|
||||
0x4c402b: mov eax, dword ptr [ebp - 0x13c]
|
||||
0x4c4031: push eax
|
||||
0x4c4032: lea ecx, [ebp - 0x148]
|
||||
0x4c4038: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c403b: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4041: mov edx, 0x4c4950 ; str='SIZE2'
|
||||
0x4c4046: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c404b: mov eax, dword ptr [ebp - 0x148]
|
||||
0x4c4051: lea edx, [ebp - 0x144]
|
||||
0x4c4057: call 0x401714 ; rtl60!@Sysutils@TrimRight$qqrx17System@AnsiString
|
||||
0x4c405c: mov eax, dword ptr [ebp - 0x144]
|
||||
0x4c4062: push eax
|
||||
0x4c4063: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4066: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c406c: mov edx, 0x4c4960 ; str='EXIST1'
|
||||
0x4c4071: call 0x402d78 ; Apollo5D6!@Apodset@TApolloTable@GetInteger$qqr17System@AnsiString
|
||||
0x4c4076: push eax
|
||||
0x4c4077: lea ecx, [ebp - 0x150]
|
||||
0x4c407d: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4080: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4086: mov edx, 0x4c4970 ; str='NAME2'
|
||||
0x4c408b: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c4090: mov eax, dword ptr [ebp - 0x150]
|
||||
0x4c4096: lea edx, [ebp - 0x14c]
|
||||
0x4c409c: call 0x401714 ; rtl60!@Sysutils@TrimRight$qqrx17System@AnsiString
|
||||
0x4c40a1: mov eax, dword ptr [ebp - 0x14c]
|
||||
0x4c40a7: push eax
|
||||
0x4c40a8: lea ecx, [ebp - 0x158]
|
||||
0x4c40ae: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c40b1: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c40b7: mov edx, 0x4c4980 ; str='NAME1'
|
||||
0x4c40bc: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c40c1: mov eax, dword ptr [ebp - 0x158]
|
||||
0x4c40c7: lea edx, [ebp - 0x154]
|
||||
0x4c40cd: call 0x401714 ; rtl60!@Sysutils@TrimRight$qqrx17System@AnsiString
|
||||
0x4c40d2: mov eax, dword ptr [ebp - 0x154]
|
||||
0x4c40d8: push eax
|
||||
0x4c40d9: lea ecx, [ebp - 0x160]
|
||||
0x4c40df: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c40e2: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c40e8: mov edx, 0x4c4990 ; str='ITNUM'
|
||||
0x4c40ed: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c40f2: mov eax, dword ptr [ebp - 0x160]
|
||||
0x4c40f8: lea edx, [ebp - 0x15c]
|
||||
0x4c40fe: call 0x401714 ; rtl60!@Sysutils@TrimRight$qqrx17System@AnsiString
|
||||
0x4c4103: mov eax, dword ptr [ebp - 0x15c]
|
||||
0x4c4109: pop edx
|
||||
0x4c410a: pop ecx
|
||||
0x4c410b: call 0x4c39b4
|
||||
0x4c4110: pop ecx
|
||||
0x4c4111: mov eax, dword ptr [0x4ebf3c]
|
||||
0x4c4116: mov eax, dword ptr [eax]
|
||||
0x4c4118: cmp byte ptr [eax + 0x1763], 0
|
||||
0x4c411f: jne 0x4c4137
|
||||
0x4c4121: cmp byte ptr [ebp - 6], 0x54
|
||||
0x4c4125: jne 0x4c4137
|
||||
0x4c4127: mov eax, dword ptr [0x4ebf3c]
|
||||
0x4c412c: mov eax, dword ptr [eax]
|
||||
0x4c412e: cmp byte ptr [eax + 0x1759], 0
|
||||
0x4c4135: jne 0x4c4142
|
||||
0x4c4137: mov al, byte ptr [ebp - 6]
|
||||
0x4c413a: sub al, 0x43
|
||||
0x4c413c: je 0x4c4142
|
||||
0x4c413e: sub al, 2
|
||||
0x4c4140: jne 0x4c41a4
|
||||
0x4c4142: mov eax, dword ptr [0x4eb8dc]
|
||||
0x4c4147: push eax
|
||||
0x4c4148: mov eax, dword ptr [0x4eb8d0]
|
||||
0x4c414d: push eax
|
||||
0x4c414e: mov eax, dword ptr [0x4eb91c]
|
||||
0x4c4153: push eax
|
||||
0x4c4154: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4157: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c415d: mov edx, 0x4c49a0 ; str='T_AMT2'
|
||||
0x4c4162: call 0x402d70 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x4c4167: add esp, -0xc
|
||||
0x4c416a: fstp xword ptr [esp]
|
||||
0x4c416d: wait
|
||||
0x4c416e: lea eax, [ebp - 0x174]
|
||||
0x4c4174: push eax
|
||||
0x4c4175: call 0x437854 ; DP_COMMON!DIS_FMT1
|
||||
0x4c417a: mov edx, dword ptr [ebp - 0x174]
|
||||
0x4c4180: lea eax, [ebp - 0x170]
|
||||
0x4c4186: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c418b: lea edx, [ebp - 0x170]
|
||||
0x4c4191: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4194: mov eax, dword ptr [eax + 0x31c]
|
||||
0x4c419a: mov ecx, dword ptr [eax]
|
||||
0x4c419c: call dword ptr [ecx + 0xc4]
|
||||
0x4c41a2: jmp 0x4c41c8
|
||||
0x4c41a4: lea eax, [ebp - 0x184]
|
||||
0x4c41aa: xor edx, edx
|
||||
0x4c41ac: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c41b1: lea edx, [ebp - 0x184]
|
||||
0x4c41b7: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c41ba: mov eax, dword ptr [eax + 0x31c]
|
||||
0x4c41c0: mov ecx, dword ptr [eax]
|
||||
0x4c41c2: call dword ptr [ecx + 0xc4]
|
||||
0x4c41c8: mov eax, dword ptr [0x4ebf3c]
|
||||
0x4c41cd: mov eax, dword ptr [eax]
|
||||
0x4c41cf: movsx eax, byte ptr [eax + 0x1788]
|
||||
0x4c41d6: test eax, eax
|
||||
0x4c41d8: jle 0x4c4513
|
||||
0x4c41de: mov dword ptr [ebp - 0x1c], eax
|
||||
0x4c41e1: mov dword ptr [ebp - 0x20], 0x579ed4
|
||||
0x4c41e8: mov dword ptr [ebp - 0x24], 0x576e50
|
||||
0x4c41ef: push 0x4c49b0
|
||||
0x4c41f4: lea eax, [ebp - 0x188]
|
||||
0x4c41fa: mov dl, byte ptr [ebp - 6]
|
||||
0x4c41fd: call 0x401208 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
|
||||
0x4c4202: mov eax, dword ptr [ebp - 0x188]
|
||||
0x4c4208: push eax
|
||||
0x4c4209: call 0x4377ec ; DP_COMMON!MPOS
|
||||
0x4c420e: test al, al
|
||||
0x4c4210: jne 0x4c421c
|
||||
0x4c4212: xor eax, eax
|
||||
0x4c4214: mov dword ptr [ebp - 0x18], eax
|
||||
0x4c4217: mov dword ptr [ebp - 0x14], eax
|
||||
0x4c421a: jmp 0x4c4242
|
||||
0x4c421c: lea eax, [ebp - 0x18c]
|
||||
0x4c4222: mov edx, dword ptr [ebp - 0x20]
|
||||
0x4c4225: call 0x401218
|
||||
0x4c422a: mov edx, dword ptr [ebp - 0x18c]
|
||||
0x4c4230: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4233: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4239: call 0x402d70 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x4c423e: fstp qword ptr [ebp - 0x18]
|
||||
0x4c4241: wait
|
||||
0x4c4242: lea eax, [ebp - 0x1a4]
|
||||
0x4c4248: mov edx, dword ptr [ebp - 0x20]
|
||||
0x4c424b: add edx, 0x200
|
||||
0x4c4251: call 0x401218
|
||||
0x4c4256: mov eax, dword ptr [ebp - 0x1a4]
|
||||
0x4c425c: push eax
|
||||
0x4c425d: lea eax, [ebp - 0x1a8]
|
||||
0x4c4263: mov edx, dword ptr [ebp - 0x20]
|
||||
0x4c4266: add edx, 0x100
|
||||
0x4c426c: call 0x401218
|
||||
0x4c4271: mov eax, dword ptr [ebp - 0x1a8]
|
||||
0x4c4277: push eax
|
||||
0x4c4278: mov eax, dword ptr [ebp - 0x20]
|
||||
0x4c427b: movsx eax, byte ptr [eax + 0x301]
|
||||
0x4c4282: push eax
|
||||
0x4c4283: fld qword ptr [ebp - 0x18]
|
||||
0x4c4286: add esp, -0xc
|
||||
0x4c4289: fstp xword ptr [esp]
|
||||
0x4c428c: wait
|
||||
0x4c428d: lea eax, [ebp - 0x1a0]
|
||||
0x4c4293: push eax
|
||||
0x4c4294: call 0x437854 ; DP_COMMON!DIS_FMT1
|
||||
0x4c4299: mov edx, dword ptr [ebp - 0x1a0]
|
||||
0x4c429f: lea eax, [ebp - 0x19c]
|
||||
0x4c42a5: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c42aa: lea edx, [ebp - 0x19c]
|
||||
0x4c42b0: mov eax, dword ptr [ebp - 0x20]
|
||||
0x4c42b3: mov eax, dword ptr [eax - 4]
|
||||
0x4c42b6: mov ecx, dword ptr [eax]
|
||||
0x4c42b8: call dword ptr [ecx + 0xc4]
|
||||
0x4c42be: mov dword ptr [ebp - 0x10], 4
|
||||
0x4c42c5: mov eax, dword ptr [ebp - 0x24]
|
||||
0x4c42c8: mov dword ptr [ebp - 0x28], eax
|
||||
0x4c42cb: mov edi, 1
|
||||
0x4c42d0: mov eax, dword ptr [ebp - 0x28]
|
||||
0x4c42d3: mov ebx, eax
|
||||
0x4c42d5: mov esi, ebx
|
||||
0x4c42d7: mov eax, dword ptr [0x4ebf3c]
|
||||
0x4c42dc: mov eax, dword ptr [eax]
|
||||
0x4c42de: cmp byte ptr [eax + 0x1763], 0
|
||||
0x4c42e5: je 0x4c4309
|
||||
0x4c42e7: lea eax, [ebp - 0x1b8]
|
||||
0x4c42ed: xor edx, edx
|
||||
0x4c42ef: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c42f4: lea edx, [ebp - 0x1b8]
|
||||
0x4c42fa: mov eax, dword ptr [esi]
|
||||
0x4c42fc: mov ecx, dword ptr [eax]
|
||||
0x4c42fe: call dword ptr [ecx + 0xc4]
|
||||
0x4c4304: jmp 0x4c44dc
|
||||
0x4c4309: mov al, byte ptr [ebp - 6]
|
||||
0x4c430c: add al, 0xc0
|
||||
0x4c430e: cmp al, 0x1f
|
||||
0x4c4310: ja 0x4c431c
|
||||
0x4c4312: and eax, 0x7f
|
||||
0x4c4315: bt dword ptr [0x4c49bc], eax
|
||||
0x4c431c: jae 0x4c43e5
|
||||
0x4c4322: fld qword ptr [ebp - 0x18]
|
||||
0x4c4325: fcomp dword ptr [0x4c49c0] ; f32=0.0
|
||||
0x4c432b: fnstsw ax
|
||||
0x4c432d: sahf
|
||||
0x4c432e: jne 0x4c4352
|
||||
0x4c4330: lea eax, [ebp - 0x1c8]
|
||||
0x4c4336: xor edx, edx
|
||||
0x4c4338: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c433d: lea edx, [ebp - 0x1c8]
|
||||
0x4c4343: mov eax, dword ptr [esi]
|
||||
0x4c4345: mov ecx, dword ptr [eax]
|
||||
0x4c4347: call dword ptr [ecx + 0xc4]
|
||||
0x4c434d: jmp 0x4c44dc
|
||||
0x4c4352: lea eax, [ebp - 0x1e0]
|
||||
0x4c4358: lea edx, [esi + 0x204]
|
||||
0x4c435e: call 0x401218
|
||||
0x4c4363: mov eax, dword ptr [ebp - 0x1e0]
|
||||
0x4c4369: push eax
|
||||
0x4c436a: lea eax, [ebp - 0x1e4]
|
||||
0x4c4370: lea edx, [esi + 0x104]
|
||||
0x4c4376: call 0x401218
|
||||
0x4c437b: mov eax, dword ptr [ebp - 0x1e4]
|
||||
0x4c4381: push eax
|
||||
0x4c4382: movsx eax, byte ptr [esi + 0x305]
|
||||
0x4c4389: push eax
|
||||
0x4c438a: lea eax, [ebp - 0x1e8]
|
||||
0x4c4390: lea edx, [esi + 4]
|
||||
0x4c4393: call 0x401218
|
||||
0x4c4398: mov edx, dword ptr [ebp - 0x1e8]
|
||||
0x4c439e: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c43a1: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c43a7: call 0x402d70 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x4c43ac: add esp, -0xc
|
||||
0x4c43af: fstp xword ptr [esp]
|
||||
0x4c43b2: wait
|
||||
0x4c43b3: lea eax, [ebp - 0x1dc]
|
||||
0x4c43b9: push eax
|
||||
0x4c43ba: call 0x437854 ; DP_COMMON!DIS_FMT1
|
||||
0x4c43bf: mov edx, dword ptr [ebp - 0x1dc]
|
||||
0x4c43c5: lea eax, [ebp - 0x1d8]
|
||||
0x4c43cb: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c43d0: lea edx, [ebp - 0x1d8]
|
||||
0x4c43d6: mov eax, dword ptr [esi]
|
||||
0x4c43d8: mov ecx, dword ptr [eax]
|
||||
0x4c43da: call dword ptr [ecx + 0xc4]
|
||||
0x4c43e0: jmp 0x4c44dc
|
||||
0x4c43e5: cmp edi, 2
|
||||
0x4c43e8: jne 0x4c44bf
|
||||
0x4c43ee: mov al, byte ptr [ebp - 6]
|
||||
0x4c43f1: cmp al, 0x54
|
||||
0x4c43f3: jne 0x4c4406
|
||||
0x4c43f5: mov edx, dword ptr [0x4ebf3c]
|
||||
0x4c43fb: mov edx, dword ptr [edx]
|
||||
0x4c43fd: cmp byte ptr [edx + 0x1759], 0
|
||||
0x4c4404: jne 0x4c442f
|
||||
0x4c4406: sub al, 0x43
|
||||
0x4c4408: je 0x4c442f
|
||||
0x4c440a: sub al, 2
|
||||
0x4c440c: je 0x4c442f
|
||||
0x4c440e: cmp dword ptr [0x57a4e0], 2
|
||||
0x4c4415: jne 0x4c44bf
|
||||
0x4c441b: cmp byte ptr [ebp - 6], 0x54
|
||||
0x4c441f: jne 0x4c44bf
|
||||
0x4c4425: cmp byte ptr [ebp - 5], 0x31
|
||||
0x4c4429: jne 0x4c44bf
|
||||
0x4c442f: lea eax, [ebp - 0x200]
|
||||
0x4c4435: lea edx, [esi + 0x204]
|
||||
0x4c443b: call 0x401218
|
||||
0x4c4440: mov eax, dword ptr [ebp - 0x200]
|
||||
0x4c4446: push eax
|
||||
0x4c4447: lea eax, [ebp - 0x204]
|
||||
0x4c444d: lea edx, [esi + 0x104]
|
||||
0x4c4453: call 0x401218
|
||||
0x4c4458: mov eax, dword ptr [ebp - 0x204]
|
||||
0x4c445e: push eax
|
||||
0x4c445f: movsx eax, byte ptr [esi + 0x305]
|
||||
0x4c4466: push eax
|
||||
0x4c4467: lea eax, [ebp - 0x208]
|
||||
0x4c446d: lea edx, [esi + 4]
|
||||
0x4c4470: call 0x401218
|
||||
0x4c4475: mov edx, dword ptr [ebp - 0x208]
|
||||
0x4c447b: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c447e: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4484: call 0x402d70 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x4c4489: add esp, -0xc
|
||||
0x4c448c: fstp xword ptr [esp]
|
||||
0x4c448f: wait
|
||||
0x4c4490: lea eax, [ebp - 0x1fc]
|
||||
0x4c4496: push eax
|
||||
0x4c4497: call 0x437854 ; DP_COMMON!DIS_FMT1
|
||||
0x4c449c: mov edx, dword ptr [ebp - 0x1fc]
|
||||
0x4c44a2: lea eax, [ebp - 0x1f8]
|
||||
0x4c44a8: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c44ad: lea edx, [ebp - 0x1f8]
|
||||
0x4c44b3: mov eax, dword ptr [esi]
|
||||
0x4c44b5: mov ecx, dword ptr [eax]
|
||||
0x4c44b7: call dword ptr [ecx + 0xc4]
|
||||
0x4c44bd: jmp 0x4c44dc
|
||||
0x4c44bf: lea eax, [ebp - 0x218]
|
||||
0x4c44c5: xor edx, edx
|
||||
0x4c44c7: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c44cc: lea edx, [ebp - 0x218]
|
||||
0x4c44d2: mov eax, dword ptr [esi]
|
||||
0x4c44d4: mov ecx, dword ptr [eax]
|
||||
0x4c44d6: call dword ptr [ecx + 0xc4]
|
||||
0x4c44dc: inc edi
|
||||
0x4c44dd: add ebx, 0x308
|
||||
0x4c44e3: cmp edi, 3
|
||||
0x4c44e6: jne 0x4c42d5
|
||||
0x4c44ec: add dword ptr [ebp - 0x28], 0x610
|
||||
0x4c44f3: dec dword ptr [ebp - 0x10]
|
||||
0x4c44f6: jne 0x4c42cb
|
||||
0x4c44fc: add dword ptr [ebp - 0x24], 0x1840
|
||||
0x4c4503: add dword ptr [ebp - 0x20], 0x308
|
||||
0x4c450a: dec dword ptr [ebp - 0x1c]
|
||||
0x4c450d: jne 0x4c41ef
|
||||
0x4c4513: mov al, byte ptr [ebp - 6]
|
||||
0x4c4516: add al, 0xc0
|
||||
0x4c4518: cmp al, 0x1f
|
||||
0x4c451a: ja 0x4c4526
|
||||
0x4c451c: and eax, 0x7f
|
||||
0x4c451f: bt dword ptr [0x4c49c4], eax
|
||||
0x4c4526: jae 0x4c45b7
|
||||
0x4c452c: push 0x4c49d0
|
||||
0x4c4531: push 0
|
||||
0x4c4533: lea eax, [ebp - 0x230]
|
||||
0x4c4539: push eax
|
||||
0x4c453a: lea ecx, [ebp - 0x234]
|
||||
0x4c4540: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4543: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4549: mov edx, 0x4c49dc ; str='UNIT1'
|
||||
0x4c454e: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c4553: mov eax, dword ptr [ebp - 0x234]
|
||||
0x4c4559: push eax
|
||||
0x4c455a: lea eax, [ebp - 0x238]
|
||||
0x4c4560: lea edx, [ebp - 7]
|
||||
0x4c4563: call 0x401218
|
||||
0x4c4568: mov eax, dword ptr [ebp - 0x238]
|
||||
0x4c456e: mov ecx, 0x4c49ec ; str='%'
|
||||
0x4c4573: pop edx
|
||||
0x4c4574: call 0x44adf0
|
||||
0x4c4579: mov eax, dword ptr [ebp - 0x230]
|
||||
0x4c457f: lea edx, [ebp - 0x22c]
|
||||
0x4c4585: call 0x401704 ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x4c458a: mov edx, dword ptr [ebp - 0x22c]
|
||||
0x4c4590: lea eax, [ebp - 0x228]
|
||||
0x4c4596: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c459b: lea edx, [ebp - 0x228]
|
||||
0x4c45a1: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c45a4: mov eax, dword ptr [eax + 0x32c]
|
||||
0x4c45aa: mov ecx, dword ptr [eax]
|
||||
0x4c45ac: call dword ptr [ecx + 0xc4]
|
||||
0x4c45b2: jmp 0x4c4660
|
||||
0x4c45b7: lea eax, [ebp - 0x240]
|
||||
0x4c45bd: lea edx, [ebp - 7]
|
||||
0x4c45c0: call 0x401218
|
||||
0x4c45c5: mov eax, dword ptr [ebp - 0x240]
|
||||
0x4c45cb: lea edx, [ebp - 0x23c]
|
||||
0x4c45d1: call 0x401704 ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x4c45d6: mov eax, dword ptr [ebp - 0x23c]
|
||||
0x4c45dc: mov edx, 0x4c49f8 ; str='QTY'
|
||||
0x4c45e1: call 0x401250 ; rtl60!@System@@LStrCmp$qqrv
|
||||
0x4c45e6: jne 0x4c463c
|
||||
0x4c45e8: lea ecx, [ebp - 0x258]
|
||||
0x4c45ee: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c45f1: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c45f7: mov edx, 0x4c49dc ; str='UNIT1'
|
||||
0x4c45fc: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c4601: mov eax, dword ptr [ebp - 0x258]
|
||||
0x4c4607: lea edx, [ebp - 0x254]
|
||||
0x4c460d: call 0x401704 ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x4c4612: mov edx, dword ptr [ebp - 0x254]
|
||||
0x4c4618: lea eax, [ebp - 0x250]
|
||||
0x4c461e: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c4623: lea edx, [ebp - 0x250]
|
||||
0x4c4629: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c462c: mov eax, dword ptr [eax + 0x32c]
|
||||
0x4c4632: mov ecx, dword ptr [eax]
|
||||
0x4c4634: call dword ptr [ecx + 0xc4]
|
||||
0x4c463a: jmp 0x4c4660
|
||||
0x4c463c: lea eax, [ebp - 0x268]
|
||||
0x4c4642: xor edx, edx
|
||||
0x4c4644: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c4649: lea edx, [ebp - 0x268]
|
||||
0x4c464f: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4652: mov eax, dword ptr [eax + 0x32c]
|
||||
0x4c4658: mov ecx, dword ptr [eax]
|
||||
0x4c465a: call dword ptr [ecx + 0xc4]
|
||||
0x4c4660: lea eax, [ebp - 0x26c]
|
||||
0x4c4666: mov edx, dword ptr [ebp - 0xc]
|
||||
0x4c4669: mov ebx, dword ptr [edx + 0x310]
|
||||
0x4c466f: lea edx, [ebx + 0x1e0]
|
||||
0x4c4675: call 0x401320 ; rtl60!@System@@VarToLStr$qqrr17System@AnsiStringrx14System@Variant
|
||||
0x4c467a: mov eax, dword ptr [ebp - 0x26c]
|
||||
0x4c4680: mov ecx, dword ptr [ebx + 0x48]
|
||||
0x4c4683: mov edx, dword ptr [0x4eb8e4]
|
||||
0x4c4689: call 0x4796ec
|
||||
0x4c468e: mov edx, eax
|
||||
0x4c4690: mov eax, ebx
|
||||
0x4c4692: call 0x402bb8 ; dclhrp60!@Hrctrlsc@THRCustomLabel@SetFontWidth$qqri
|
||||
0x4c4697: lea eax, [ebp - 0x270]
|
||||
0x4c469d: mov edx, dword ptr [ebp - 0xc]
|
||||
0x4c46a0: mov ebx, dword ptr [edx + 0x32c]
|
||||
0x4c46a6: lea edx, [ebx + 0x1e0]
|
||||
0x4c46ac: call 0x401320 ; rtl60!@System@@VarToLStr$qqrr17System@AnsiStringrx14System@Variant
|
||||
0x4c46b1: mov eax, dword ptr [ebp - 0x270]
|
||||
0x4c46b7: mov ecx, dword ptr [ebx + 0x48]
|
||||
0x4c46ba: mov edx, dword ptr [0x4eb8e4]
|
||||
0x4c46c0: call 0x4796ec
|
||||
0x4c46c5: mov edx, eax
|
||||
0x4c46c7: mov eax, ebx
|
||||
0x4c46c9: call 0x402bb8 ; dclhrp60!@Hrctrlsc@THRCustomLabel@SetFontWidth$qqri
|
||||
0x4c46ce: lea ecx, [ebp - 0x278]
|
||||
0x4c46d4: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c46d7: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c46dd: mov edx, 0x4c4a04 ; str='UNIT2'
|
||||
0x4c46e2: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c46e7: mov eax, dword ptr [ebp - 0x278]
|
||||
0x4c46ed: lea edx, [ebp - 0x274]
|
||||
0x4c46f3: call 0x401704 ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
|
||||
0x4c46f8: mov eax, dword ptr [ebp - 0x274]
|
||||
0x4c46fe: mov edx, dword ptr [ebp - 0xc]
|
||||
0x4c4701: mov edx, dword ptr [edx + 0x318]
|
||||
0x4c4707: mov ecx, dword ptr [edx + 0x48]
|
||||
0x4c470a: mov edx, dword ptr [0x4eb8e4]
|
||||
0x4c4710: call 0x4796ec
|
||||
0x4c4715: mov edx, eax
|
||||
0x4c4717: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c471a: mov eax, dword ptr [eax + 0x318]
|
||||
0x4c4720: call 0x402bb8 ; dclhrp60!@Hrctrlsc@THRCustomLabel@SetFontWidth$qqri
|
||||
0x4c4725: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c4728: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c472e: push eax
|
||||
0x4c472f: lea eax, [ebp - 0x28c]
|
||||
0x4c4735: push eax
|
||||
0x4c4736: lea ecx, [ebp - 0x290]
|
||||
0x4c473c: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c473f: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4745: mov edx, 0x4c4a14 ; str='SORTCODE'
|
||||
0x4c474a: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c474f: mov eax, dword ptr [ebp - 0x290]
|
||||
0x4c4755: push eax
|
||||
0x4c4756: lea ecx, [ebp - 0x294]
|
||||
0x4c475c: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c475f: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c4765: mov edx, 0x4c4a28 ; str='CODEA'
|
||||
0x4c476a: call 0x402d90 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x4c476f: mov eax, dword ptr [ebp - 0x294]
|
||||
0x4c4775: push eax
|
||||
0x4c4776: lea eax, [ebp - 0x298]
|
||||
0x4c477c: lea edx, [ebp - 7]
|
||||
0x4c477f: call 0x401218
|
||||
0x4c4784: mov eax, dword ptr [ebp - 0x298]
|
||||
0x4c478a: pop edx
|
||||
0x4c478b: pop ecx
|
||||
0x4c478c: call 0x4764c8
|
||||
0x4c4791: mov edx, dword ptr [ebp - 0x28c]
|
||||
0x4c4797: lea eax, [ebp - 0x288]
|
||||
0x4c479d: call 0x401360 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4c47a2: lea edx, [ebp - 0x288]
|
||||
0x4c47a8: mov eax, dword ptr [ebp - 0xc]
|
||||
0x4c47ab: mov eax, dword ptr [eax + 0x330]
|
||||
0x4c47b1: mov ecx, dword ptr [eax]
|
||||
0x4c47b3: call dword ptr [ecx + 0xc4]
|
||||
0x4c47b9: lea eax, [ebp - 0x29c]
|
||||
0x4c47bf: mov edx, dword ptr [ebp - 0xc]
|
||||
0x4c47c2: mov ebx, dword ptr [edx + 0x330]
|
||||
0x4c47c8: lea edx, [ebx + 0x1e0]
|
||||
0x4c47ce: call 0x401320 ; rtl60!@System@@VarToLStr$qqrr17System@AnsiStringrx14System@Variant
|
||||
0x4c47d3: mov eax, dword ptr [ebp - 0x29c]
|
||||
0x4c47d9: mov ecx, dword ptr [ebx + 0x48]
|
||||
0x4c47dc: mov edx, dword ptr [0x4eb8e4]
|
||||
0x4c47e2: call 0x4796ec
|
||||
0x4c47e7: mov edx, eax
|
||||
0x4c47e9: mov eax, ebx
|
||||
0x4c47eb: call 0x402bb8 ; dclhrp60!@Hrctrlsc@THRCustomLabel@SetFontWidth$qqri
|
||||
0x4c47f0: xor eax, eax
|
||||
0x4c47f2: pop edx
|
||||
0x4c47f3: pop ecx
|
||||
0x4c47f4: pop ecx
|
||||
0x4c47f5: mov dword ptr fs:[eax], edx
|
||||
0x4c47f8: push 0x4c491c
|
||||
0x4c47fd: lea eax, [ebp - 0x29c]
|
||||
0x4c4803: mov edx, 5
|
||||
0x4c4808: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c480d: lea eax, [ebp - 0x288]
|
||||
0x4c4813: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c4818: lea eax, [ebp - 0x278]
|
||||
0x4c481e: mov edx, 4
|
||||
0x4c4823: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c4828: lea eax, [ebp - 0x268]
|
||||
0x4c482e: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c4833: lea eax, [ebp - 0x258]
|
||||
0x4c4839: mov edx, 2
|
||||
0x4c483e: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c4843: lea eax, [ebp - 0x250]
|
||||
0x4c4849: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c484e: lea eax, [ebp - 0x240]
|
||||
0x4c4854: mov edx, 6
|
||||
0x4c4859: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c485e: lea eax, [ebp - 0x228]
|
||||
0x4c4864: mov edx, dword ptr [0x5edc00]
|
||||
0x4c486a: mov ecx, 2
|
||||
0x4c486f: call 0x4012b8 ; rtl60!@System@@FinalizeArray$qqrpvt1ui
|
||||
0x4c4874: lea eax, [ebp - 0x208]
|
||||
0x4c487a: mov edx, 4
|
||||
0x4c487f: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c4884: lea eax, [ebp - 0x1f8]
|
||||
0x4c488a: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c488f: lea eax, [ebp - 0x1e8]
|
||||
0x4c4895: mov edx, 4
|
||||
0x4c489a: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c489f: lea eax, [ebp - 0x1d8]
|
||||
0x4c48a5: mov edx, dword ptr [0x5edc00]
|
||||
0x4c48ab: mov ecx, 3
|
||||
0x4c48b0: call 0x4012b8 ; rtl60!@System@@FinalizeArray$qqrpvt1ui
|
||||
0x4c48b5: lea eax, [ebp - 0x1a8]
|
||||
0x4c48bb: mov edx, 3
|
||||
0x4c48c0: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c48c5: lea eax, [ebp - 0x19c]
|
||||
0x4c48cb: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c48d0: lea eax, [ebp - 0x18c]
|
||||
0x4c48d6: mov edx, 2
|
||||
0x4c48db: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c48e0: lea eax, [ebp - 0x184]
|
||||
0x4c48e6: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c48eb: lea eax, [ebp - 0x174]
|
||||
0x4c48f1: call 0x4011e0 ; rtl60!@System@@LStrClr$qqrpv
|
||||
0x4c48f6: lea eax, [ebp - 0x170]
|
||||
0x4c48fc: call 0x4013c8 ; rtl60!@System@@VarClr$qqrr14System@Variant
|
||||
0x4c4901: lea eax, [ebp - 0x160]
|
||||
0x4c4907: mov edx, 0xe
|
||||
0x4c490c: call 0x4011e8 ; rtl60!@System@@LStrArrayClr$qqrpvi
|
||||
0x4c4911: ret
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
0x4c245d: call 0x402df0 ; Apollo5D6!@Apodset@TApolloTable@SetTableName$qqr17System@AnsiString
|
||||
0x4c2462: cmp dword ptr [0x57a4e0], 1
|
||||
0x4c2469: jne 0x4c24a1
|
||||
0x4c246b: mov eax, dword ptr [edi]
|
||||
0x4c246d: cmp byte ptr [eax + 0x1768], 0
|
||||
0x4c2474: je 0x4c24a1
|
||||
0x4c2476: mov eax, dword ptr [ebp - 8]
|
||||
0x4c2479: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c247f: mov edx, 0x4c2798 ; str='!(SUBSTR(BDCODE1,1,1)$"MLSWBDXAP" .and. QTY1=0)'
|
||||
0x4c2484: mov ecx, dword ptr [eax]
|
||||
0x4c2486: call dword ptr [ecx + 0x198]
|
||||
0x4c248c: mov eax, dword ptr [ebp - 8]
|
||||
0x4c248f: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c2495: mov dl, 1
|
||||
0x4c2497: mov ecx, dword ptr [eax]
|
||||
0x4c2499: call dword ptr [ecx + 0x190]
|
||||
0x4c249f: jmp 0x4c24d3
|
||||
0x4c24a1: cmp dword ptr [0x57a4e0], 2
|
||||
0x4c24a8: jne 0x4c24d3
|
||||
0x4c24aa: mov eax, dword ptr [ebp - 8]
|
||||
0x4c24ad: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c24b3: mov edx, 0x4c27d0 ; str='SUBSTR(BDCODE1,1,1)$"TEC" .or. RS=1'
|
||||
0x4c24b8: mov ecx, dword ptr [eax]
|
||||
0x4c24ba: call dword ptr [ecx + 0x198]
|
||||
0x4c24c0: mov eax, dword ptr [ebp - 8]
|
||||
0x4c24c3: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x4c24c9: mov dl, 1
|
||||
0x4c24cb: mov ecx, dword ptr [eax]
|
||||
0x4c24cd: call dword ptr [ecx + 0x190]
|
||||
0x4c24d3: lea eax, [ebp - 0x3e4]
|
||||
0x4c24d9: mov edx, dword ptr [edi]
|
||||
0x4c24db: add edx, 0x628
|
||||
0x4c24e1: call 0x401218
|
||||
0x4c24e6: mov edx, dword ptr [ebp - 0x3e4]
|
||||
0x4c24ec: mov eax, dword ptr [ebp - 8]
|
||||
0x4c24ef: mov eax, dword ptr [eax + 0x398]
|
||||
0x4c24f5: call 0x402bb0 ; dclhrp60!@Hrctrlsc@THRCustomLabel@SetCaption$qqr17System@AnsiString
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
0x4513e7: push ebp
|
||||
0x4513e8: mov eax, dword ptr [0x4d38ec]
|
||||
0x4513ed: push eax
|
||||
0x4513ee: lea eax, [ebp - 0x674]
|
||||
0x4513f4: mov edx, 0x452d20 ; str='Prn_Nae'
|
||||
0x4513f9: call 0x401378 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4513fe: push dword ptr [ebp - 0x668]
|
||||
0x451404: push dword ptr [ebp - 0x66c]
|
||||
0x45140a: push dword ptr [ebp - 0x670]
|
||||
0x451410: push dword ptr [ebp - 0x674]
|
||||
0x451416: lea eax, [ebp - 0x684]
|
||||
0x45141c: mov edx, 0x452d30 ; str='Prn_NaeW'
|
||||
0x451421: call 0x401378 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x451426: push dword ptr [ebp - 0x678]
|
||||
0x45142c: push dword ptr [ebp - 0x67c]
|
||||
0x451432: push dword ptr [ebp - 0x680]
|
||||
0x451438: push dword ptr [ebp - 0x684]
|
||||
0x45143e: push ebx
|
||||
0x45143f: lea eax, [ebp - 0x664]
|
||||
0x451445: push eax
|
||||
0x451446: call 0x4047a4 ; DP_COMMON!IIF
|
||||
0x45144b: lea edx, [ebp - 0x664]
|
||||
0x451451: lea eax, [ebp - 0x654]
|
||||
0x451457: call 0x401340 ; rtl60!@System@@VarToLStr$qqrr17System@AnsiStringrx14System@Variant
|
||||
0x45145c: mov edx, dword ptr [ebp - 0x654]
|
||||
0x451462: mov ecx, 0x452d44 ; str='Prn_Nae_EXL'
|
||||
0x451467: mov eax, 0x452c78 ; str='ST_P_Nae.CPM'
|
||||
0x45146c: call 0x44fb68
|
||||
0x451471: pop ecx
|
||||
0x451472: jmp 0x451e27
|
||||
0x451477: push ebp
|
||||
0x451478: mov eax, dword ptr [0x4d38ec]
|
||||
0x45147d: push eax
|
||||
0x45147e: lea eax, [ebp - 0x6a8]
|
||||
0x451484: mov edx, 0x452d58 ; str='Prn_Nae_P'
|
||||
0x451489: call 0x401378 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x45148e: push dword ptr [ebp - 0x69c]
|
||||
0x451494: push dword ptr [ebp - 0x6a0]
|
||||
0x45149a: push dword ptr [ebp - 0x6a4]
|
||||
0x4514a0: push dword ptr [ebp - 0x6a8]
|
||||
0x4514a6: lea eax, [ebp - 0x6b8]
|
||||
0x4514ac: mov edx, 0x452d6c ; str='Prn_NaeW_P'
|
||||
0x4514b1: call 0x401378 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
|
||||
0x4514b6: push dword ptr [ebp - 0x6ac]
|
||||
0x4514bc: push dword ptr [ebp - 0x6b0]
|
||||
0x4514c2: push dword ptr [ebp - 0x6b4]
|
||||
0x4514c8: push dword ptr [ebp - 0x6b8]
|
||||
0x4514ce: push ebx
|
||||
0x4514cf: lea eax, [ebp - 0x698]
|
||||
0x4514d5: push eax
|
||||
0x4514d6: call 0x4047a4 ; DP_COMMON!IIF
|
||||
0x4514db: lea edx, [ebp - 0x698]
|
||||
0x4514e1: lea eax, [ebp - 0x688]
|
||||
0x4514e7: call 0x401340 ; rtl60!@System@@VarToLStr$qqrr17System@AnsiStringrx14System@Variant
|
||||
0x4514ec: mov edx, dword ptr [ebp - 0x688]
|
||||
0x4514f2: mov ecx, 0x452d80 ; str='Prn_Nae_P_EXL'
|
||||
0x4514f7: mov eax, 0x452c78 ; str='ST_P_Nae.CPM'
|
||||
0x4514fc: call 0x44fb68
|
||||
0x451501: pop ecx
|
||||
0x451502: jmp 0x451e27
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
0x4519a8: push ebp
|
||||
0x4519a9: mov eax, dword ptr [0x4d38ec]
|
||||
0x4519ae: push eax
|
||||
0x4519af: mov ecx, 0x45327c ; str='Prn_Nae_Cont1'
|
||||
0x4519b4: mov edx, 0x45327c ; str='Prn_Nae_Cont1'
|
||||
0x4519b9: mov eax, 0x452c78 ; str='ST_P_Nae.CPM'
|
||||
0x4519be: call 0x44fb68
|
||||
0x4519c3: pop ecx
|
||||
0x4519c4: jmp 0x451e27
|
||||
0x4519c9: push ebp
|
||||
0x4519ca: mov eax, dword ptr [0x4d38ec]
|
||||
0x4519cf: push eax
|
||||
0x4519d0: mov ecx, 0x453294 ; str='Prn_Nae_Cont2'
|
||||
0x4519d5: mov edx, 0x453294 ; str='Prn_Nae_Cont2'
|
||||
0x4519da: mov eax, 0x452c78 ; str='ST_P_Nae.CPM'
|
||||
0x4519df: call 0x44fb68
|
||||
0x4519e4: pop ecx
|
||||
0x4519e5: jmp 0x451e27
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
0x44fdf5: mov eax, edi
|
||||
0x44fdf7: cmp eax, 0x5087
|
||||
0x44fdfc: jg 0x44ffab
|
||||
0x44fe02: je 0x4513c6
|
||||
0x44fe08: cmp eax, 0x4eee
|
||||
0x44fe0d: jg 0x44fefa
|
||||
0x44fe13: je 0x450876
|
||||
0x44fe19: cmp eax, 0x283f
|
||||
0x44fe1e: jg 0x44fe9b
|
||||
0x44fe20: je 0x4508d9
|
||||
0x44fe26: cmp eax, 0x27da
|
||||
0x44fe2b: jg 0x44fe72
|
||||
0x44fe2d: je 0x4505be
|
||||
0x44fe33: cmp eax, 0x2779
|
||||
0x44fe38: jg 0x44fe59
|
||||
0x44fe3a: je 0x450429
|
||||
0x44fe40: add eax, 0xffffd88b
|
||||
0x44fe45: sub eax, 3
|
||||
0x44fe48: jb 0x4500e4
|
||||
0x44fe4e: je 0x450172
|
||||
0x44fe54: jmp 0x451db6
|
||||
0x44fe59: sub eax, 0x277a
|
||||
0x44fe5e: je 0x4502c0
|
||||
0x44fe64: sub eax, 0x5f
|
||||
0x44fe67: je 0x4504fd
|
||||
0x44fe6d: jmp 0x451db6
|
||||
0x44fe72: sub eax, 0x27db
|
||||
0x44fe77: je 0x450727
|
||||
0x44fe7d: sub eax, 3
|
||||
0x44fe80: je 0x450876
|
||||
0x44fe86: sub eax, 0x5f
|
||||
0x44fe89: je 0x450897
|
||||
0x44fe8f: dec eax
|
||||
0x44fe90: je 0x4508b8
|
||||
0x44fe96: jmp 0x451db6
|
||||
0x44fe9b: cmp eax, 0x4e89
|
||||
0x44fea0: jg 0x44fed3
|
||||
0x44fea2: je 0x450429
|
||||
0x44fea8: sub eax, 0x28a1
|
||||
0x44fead: je 0x4508fa
|
||||
0x44feb3: dec eax
|
||||
0x44feb4: je 0x450b50
|
||||
0x44feba: add eax, 0xffffda1d
|
||||
0x44febf: sub eax, 3
|
||||
0x44fec2: jb 0x4500e4
|
||||
0x44fec8: je 0x450172
|
||||
0x44fece: jmp 0x451db6
|
||||
0x44fed3: sub eax, 0x4e8a
|
||||
0x44fed8: je 0x4502c0
|
||||
0x44fede: sub eax, 0x5f
|
||||
0x44fee1: je 0x4504fd
|
||||
0x44fee7: dec eax
|
||||
0x44fee8: je 0x4505be
|
||||
0x44feee: dec eax
|
||||
0x44feef: je 0x450727
|
||||
0x44fef5: jmp 0x451db6
|
||||
0x44fefa: cmp eax, 0x507a
|
||||
0x44feff: jg 0x44ff66
|
||||
0x44ff01: je 0x451102
|
||||
0x44ff07: cmp eax, 0x4fb2
|
||||
0x44ff0c: jg 0x44ff3b
|
||||
0x44ff0e: je 0x450b50
|
||||
0x44ff14: sub eax, 0x4f4d
|
||||
0x44ff19: je 0x450897
|
||||
0x44ff1f: dec eax
|
||||
0x44ff20: je 0x4508b8
|
||||
0x44ff26: dec eax
|
||||
0x44ff27: je 0x4508d9
|
||||
0x44ff2d: sub eax, 0x62
|
||||
0x44ff30: je 0x4508fa
|
||||
0x44ff36: jmp 0x451db6
|
||||
0x44ff3b: add eax, 0xffffafeb
|
||||
0x44ff40: sub eax, 4
|
||||
0x44ff43: jb 0x450c22
|
||||
0x44ff49: sub eax, 3
|
||||
0x44ff4c: jb 0x450da4
|
||||
0x44ff52: je 0x450ce3
|
||||
0x44ff58: sub eax, 0x5d
|
||||
0x44ff5b: je 0x450e65
|
||||
0x44ff61: jmp 0x451db6
|
||||
0x44ff66: add eax, 0xffffaf85
|
||||
0x44ff6b: cmp eax, 0xb
|
||||
0x44ff6e: ja 0x451db6
|
||||
0x44ff74: jmp dword ptr [eax*4 + 0x44ff7b]
|
||||
0x44ff7b: and edx, dword ptr [ecx]
|
||||
0x44ff7d: inc ebp
|
||||
0x44ff7e: add byte ptr [ebx + 0x43004511], dh
|
||||
0x44ff84: adc al, byte ptr [ebp]
|
||||
0x44ff87: adc al, byte ptr fs:[ebp]
|
||||
0x44ff8b: test dword ptr [edx], edx
|
||||
0x44ff8d: inc ebp
|
||||
0x44ff8e: add byte ptr [esi - 0x3bffbaf2], al
|
||||
0x44ff94: cmovne eax, dword ptr [eax]
|
||||
0x44ff97: mov dh, 0x1d
|
||||
0x44ff99: inc ebp
|
||||
0x44ff9a: add byte ptr [esi - 0x49ffbae3], dh
|
||||
0x44ffa0: sbb eax, 0x12a60045
|
||||
0x44ffa5: inc ebp
|
||||
0x44ffa6: add byte ptr [esi], dh
|
||||
0x44ffa8: adc eax, dword ptr [ebp]
|
||||
0x44ffab: add eax, 0xffffaf71
|
||||
0x44ffb0: cmp eax, 0x48
|
||||
0x44ffb3: ja 0x451db6
|
||||
0x44ffb9: jmp dword ptr [eax*4 + 0x44ffc0]
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
20623 0x4513e7
|
||||
20624 0x451477
|
||||
20625 0x451db6
|
||||
20626 0x451db6
|
||||
20627 0x451db6
|
||||
20628 0x451db6
|
||||
20629 0x451db6
|
||||
20630 0x451db6
|
||||
20631 0x451db6
|
||||
20632 0x451507
|
||||
20633 0x451528
|
||||
20634 0x451549
|
||||
20635 0x45156a
|
||||
20636 0x45158b
|
||||
20637 0x45158b
|
||||
20638 0x4515ac
|
||||
20639 0x451db6
|
||||
20640 0x451db6
|
||||
20641 0x451db6
|
||||
20642 0x451db6
|
||||
20643 0x4515cd
|
||||
20644 0x45165d
|
||||
20645 0x4516ed
|
||||
20646 0x45170e
|
||||
20647 0x45170e
|
||||
20648 0x45172f
|
||||
20649 0x451798
|
||||
20650 0x451db6
|
||||
20651 0x4517b9
|
||||
20652 0x4517da
|
||||
20653 0x4517fb
|
||||
20654 0x45181c
|
||||
20655 0x45183d
|
||||
20656 0x45185e
|
||||
20657 0x45187f
|
||||
20658 0x451db6
|
||||
20659 0x451db6
|
||||
20660 0x451db6
|
||||
20661 0x4518a0
|
||||
20662 0x4518c1
|
||||
20663 0x4518e2
|
||||
20664 0x451903
|
||||
20665 0x451924
|
||||
20666 0x451945
|
||||
20667 0x451966
|
||||
20668 0x451db6
|
||||
20669 0x451db6
|
||||
20670 0x451db6
|
||||
20671 0x451c53
|
||||
20672 0x451987
|
||||
20673 0x4519a8
|
||||
20674 0x4519c9
|
||||
20675 0x4519ea
|
||||
20676 0x451a0b
|
||||
20677 0x451a2c
|
||||
20678 0x451a4d
|
||||
20679 0x451b50
|
||||
20680 0x451db6
|
||||
20681 0x451db6
|
||||
20682 0x451db6
|
||||
20683 0x451db6
|
||||
20684 0x451db6
|
||||
20685 0x451db6
|
||||
20686 0x451db6
|
||||
20687 0x451db6
|
||||
20688 0x451db6
|
||||
20689 0x451db6
|
||||
20690 0x451db6
|
||||
20691 0x451db6
|
||||
20692 0x451db6
|
||||
20693 0x451d56
|
||||
20694 0x451d77
|
||||
20695 0x451d98
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
0 0x421d04 일반공종
|
||||
10 0x421d18 안전관리비
|
||||
11 0x421d18 안전관리비
|
||||
20 0x421d2c 품질관리비
|
||||
21 0x421d2c 품질관리비
|
||||
30 0x421d40 미확정설계공종(PS)
|
||||
31 0x421d40 미확정설계공종(PS)
|
||||
40 0x421d5c 제요율적용제외공종
|
||||
41 0x421d78 제비율적용제외공종
|
||||
50 0x421d94 작업설 등
|
||||
51 0x421d94 작업설 등
|
||||
60 0x421da8 매입세
|
||||
61 0x421da8 매입세
|
||||
70 0x421db8 관급자재공종
|
||||
71 0x421dd0 관급자재대(도급자)
|
||||
72 0x421dec 관급자재대(관급자)
|
||||
111 0x421e08 비과세자재대
|
||||
120 0x421e20 조달수수료
|
||||
+774
@@ -0,0 +1,774 @@
|
||||
0x556d68: push ebp
|
||||
0x556d69: mov ebp, esp
|
||||
0x556d6b: mov ecx, 0x2f
|
||||
0x556d70: push 0
|
||||
0x556d72: push 0
|
||||
0x556d74: dec ecx
|
||||
0x556d75: jne 0x556d70
|
||||
0x556d77: push ecx
|
||||
0x556d78: push ebx
|
||||
0x556d79: push esi
|
||||
0x556d7a: push edi
|
||||
0x556d7b: mov dword ptr [ebp - 4], eax
|
||||
0x556d7e: xor eax, eax
|
||||
0x556d80: push ebp
|
||||
0x556d81: push 0x5578e3
|
||||
0x556d86: push dword ptr fs:[eax]
|
||||
0x556d89: mov dword ptr fs:[eax], esp
|
||||
0x556d8c: xor eax, eax
|
||||
0x556d8e: push ebp
|
||||
0x556d8f: push 0x557872
|
||||
0x556d94: push dword ptr fs:[eax]
|
||||
0x556d97: mov dword ptr fs:[eax], esp
|
||||
0x556d9a: mov eax, dword ptr [0x5e5fb0]
|
||||
0x556d9f: mov eax, dword ptr [eax]
|
||||
0x556da1: mov eax, dword ptr [eax + 0x2f4]
|
||||
0x556da7: mov edx, dword ptr [0x5e6090]
|
||||
0x556dad: mov edx, dword ptr [edx]
|
||||
0x556daf: mov dword ptr [edx + 0x20], eax
|
||||
0x556db2: mov eax, dword ptr [0x5e5d7c]
|
||||
0x556db7: mov edx, dword ptr [0x5e5f8c]
|
||||
0x556dbd: mov edx, dword ptr [edx]
|
||||
0x556dbf: mov edx, dword ptr [edx + 0x38]
|
||||
0x556dc2: call 0x401260 ; rtl60!@System@@LStrAsg$qqrpvpxv
|
||||
0x556dc7: mov eax, dword ptr [0x5e5f0c]
|
||||
0x556dcc: mov edx, dword ptr [0x5fa120]
|
||||
0x556dd2: call 0x401260 ; rtl60!@System@@LStrAsg$qqrpvpxv
|
||||
0x556dd7: mov dword ptr [ebp - 8], 1
|
||||
0x556dde: mov eax, dword ptr [0x5e5f40]
|
||||
0x556de3: mov edx, dword ptr [ebp - 8]
|
||||
0x556de6: mov ecx, dword ptr [eax + edx*4]
|
||||
0x556de9: lea eax, [ebp - 0xbc]
|
||||
0x556def: mov edx, 0x5578fc ; str='TCOST'
|
||||
0x556df4: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x556df9: mov edx, dword ptr [ebp - 0xbc]
|
||||
0x556dff: mov eax, dword ptr [0x5e6090]
|
||||
0x556e04: mov eax, dword ptr [eax]
|
||||
0x556e06: mov eax, dword ptr [eax + 0x20]
|
||||
0x556e09: call 0x404770 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x556e0e: fcomp dword ptr [0x557904] ; f32=0.0
|
||||
0x556e14: fnstsw ax
|
||||
0x556e16: sahf
|
||||
0x556e17: ja 0x556e5c
|
||||
0x556e19: push 0x557910
|
||||
0x556e1e: push 0x7f01
|
||||
0x556e23: push 1
|
||||
0x556e25: mov eax, 0x557920 ; str='확 인(&O)'
|
||||
0x556e2a: mov dword ptr [ebp - 0xc0], eax
|
||||
0x556e30: lea eax, [ebp - 0xc0]
|
||||
0x556e36: push eax
|
||||
0x556e37: push 0
|
||||
0x556e39: mov eax, dword ptr [0x5fd480]
|
||||
0x556e3e: mov eax, dword ptr [eax]
|
||||
0x556e40: mov eax, dword ptr [eax + 0x30]
|
||||
0x556e43: mov ecx, 0x557934 ; str='예상적용율 산출'
|
||||
0x556e48: mov edx, 0x55794c ; str='직접공사비(내역서) 금액이 0 인 내역은 예상적용율을 산출할 수 없습니다.'
|
||||
0x556e4d: call 0x44b680
|
||||
0x556e52: call 0x401220 ; rtl60!@System@@TryFinallyExit$qqrv
|
||||
0x556e57: jmp 0x557879
|
||||
0x556e5c: mov eax, dword ptr [ebp - 4]
|
||||
0x556e5f: mov eax, dword ptr [eax + 0x2fc]
|
||||
0x556e65: mov dword ptr [ebp - 0x34], eax
|
||||
0x556e68: xor eax, eax
|
||||
0x556e6a: push ebp
|
||||
0x556e6b: push 0x556fb9
|
||||
0x556e70: push dword ptr fs:[eax]
|
||||
0x556e73: mov dword ptr fs:[eax], esp
|
||||
0x556e76: xor eax, eax
|
||||
0x556e78: mov dword ptr [ebp - 0x30], eax
|
||||
0x556e7b: mov dword ptr [ebp - 0x2c], eax
|
||||
0x556e7e: mov edx, 0x55799c ; str='SORTCODE'
|
||||
0x556e83: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556e86: call 0x404870 ; Apollo5D6!@Apodset@TApolloTable@SetIndexName$qqr17System@AnsiString
|
||||
0x556e8b: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556e8e: call 0x403ce0 ; dbrtl60!@Db@TDataSet@Open$qqrv
|
||||
0x556e93: xor edx, edx
|
||||
0x556e95: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556e98: call 0x404818 ; Apollo5D6!@Apodset@TApolloTable@Query$qqrx17System@AnsiString
|
||||
0x556e9d: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556ea0: call 0x4047b0 ; Apollo5D6!@Apodset@TApolloTable@GoBottom$qqrv
|
||||
0x556ea5: jmp 0x556f86
|
||||
0x556eaa: lea ecx, [ebp - 0xc4]
|
||||
0x556eb0: mov edx, 0x5579b0 ; str='BDCODE1'
|
||||
0x556eb5: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556eb8: call 0x404790 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x556ebd: mov eax, dword ptr [ebp - 0xc4]
|
||||
0x556ec3: cmp byte ptr [eax], 0x43
|
||||
0x556ec6: jne 0x556f02
|
||||
0x556ec8: lea ecx, [ebp - 0xd8]
|
||||
0x556ece: mov eax, dword ptr [ebp - 4]
|
||||
0x556ed1: mov eax, dword ptr [eax + 0x2fc]
|
||||
0x556ed7: mov edx, 0x5579c0 ; str='ENDCODE'
|
||||
0x556edc: call 0x403d00 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
|
||||
0x556ee1: lea edx, [ebp - 0xd8]
|
||||
0x556ee7: lea eax, [ebp - 0xc8]
|
||||
0x556eed: call 0x4013b0 ; rtl60!@System@@VarToLStr$qqrr17System@AnsiStringrx14System@Variant
|
||||
0x556ef2: mov edx, dword ptr [ebp - 0xc8]
|
||||
0x556ef8: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556efb: call 0x4047c0 ; Apollo5D6!@Apodset@TApolloTable@Seek$qqr17System@AnsiString
|
||||
0x556f00: jmp 0x556f7b
|
||||
0x556f02: push 0x5579d0
|
||||
0x556f07: lea ecx, [ebp - 0xe0]
|
||||
0x556f0d: mov edx, 0x5579b0 ; str='BDCODE1'
|
||||
0x556f12: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556f15: call 0x404790 ; Apollo5D6!@Apodset@TApolloTable@GetString$qqr17System@AnsiString
|
||||
0x556f1a: mov eax, dword ptr [ebp - 0xe0]
|
||||
0x556f20: mov dl, byte ptr [eax]
|
||||
0x556f22: lea eax, [ebp - 0xdc]
|
||||
0x556f28: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
|
||||
0x556f2d: mov eax, dword ptr [ebp - 0xdc]
|
||||
0x556f33: push eax
|
||||
0x556f34: call 0x4228cc ; DP_COMMON!MPOS
|
||||
0x556f39: test al, al
|
||||
0x556f3b: je 0x556f7b
|
||||
0x556f3d: push 0
|
||||
0x556f3f: mov eax, dword ptr [0x5e5f40]
|
||||
0x556f44: mov edx, dword ptr [ebp - 8]
|
||||
0x556f47: mov ecx, dword ptr [eax + edx*4]
|
||||
0x556f4a: lea eax, [ebp - 0xe4]
|
||||
0x556f50: mov edx, 0x5579e4 ; str='QTY'
|
||||
0x556f55: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x556f5a: mov edx, dword ptr [ebp - 0xe4]
|
||||
0x556f60: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556f63: call 0x404770 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x556f68: add esp, -0xc
|
||||
0x556f6b: fstp xword ptr [esp]
|
||||
0x556f6e: wait
|
||||
0x556f6f: call 0x42290c ; DP_COMMON!MROUNDUP
|
||||
0x556f74: fadd qword ptr [ebp - 0x30]
|
||||
0x556f77: fstp qword ptr [ebp - 0x30]
|
||||
0x556f7a: wait
|
||||
0x556f7b: or edx, 0xffffffff
|
||||
0x556f7e: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556f81: call 0x4047b8 ; Apollo5D6!@Apodset@TApolloTable@Skip$qqri
|
||||
0x556f86: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556f89: mov edx, dword ptr [eax]
|
||||
0x556f8b: call dword ptr [edx + 0x26c]
|
||||
0x556f91: test al, al
|
||||
0x556f93: je 0x556eaa
|
||||
0x556f99: xor eax, eax
|
||||
0x556f9b: pop edx
|
||||
0x556f9c: pop ecx
|
||||
0x556f9d: pop ecx
|
||||
0x556f9e: mov dword ptr fs:[eax], edx
|
||||
0x556fa1: push 0x556fc0
|
||||
0x556fa6: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556fa9: call 0x403ce8 ; dbrtl60!@Db@TDataSet@Close$qqrv
|
||||
0x556fae: xor edx, edx
|
||||
0x556fb0: mov eax, dword ptr [ebp - 0x34]
|
||||
0x556fb3: call 0x404870 ; Apollo5D6!@Apodset@TApolloTable@SetIndexName$qqr17System@AnsiString
|
||||
0x556fb8: ret
|
||||
0x556fb9: jmp 0x401200
|
||||
0x556fbe: jmp 0x556fa6
|
||||
0x556fc0: mov ebx, dword ptr [ebp - 8]
|
||||
0x556fc3: add ebx, ebx
|
||||
0x556fc5: lea ebx, [ebx + ebx*2]
|
||||
0x556fc8: mov eax, dword ptr [0x5e5d84]
|
||||
0x556fcd: mov eax, dword ptr [eax]
|
||||
0x556fcf: xor edx, edx
|
||||
0x556fd1: mov dword ptr [eax + ebx*8 - 0x20], edx
|
||||
0x556fd5: mov dword ptr [eax + ebx*8 - 0x1c], edx
|
||||
0x556fd9: mov eax, dword ptr [0x5e5d84]
|
||||
0x556fde: mov eax, dword ptr [eax]
|
||||
0x556fe0: xor edx, edx
|
||||
0x556fe2: mov dword ptr [eax + ebx*8 - 0x28], edx
|
||||
0x556fe6: mov dword ptr [eax + ebx*8 - 0x24], edx
|
||||
0x556fea: mov eax, dword ptr [0x5e5d84]
|
||||
0x556fef: mov eax, dword ptr [eax]
|
||||
0x556ff1: xor edx, edx
|
||||
0x556ff3: mov dword ptr [eax + ebx*8 - 0x18], edx
|
||||
0x556ff7: mov dword ptr [eax + ebx*8 - 0x14], edx
|
||||
0x556ffb: mov eax, dword ptr [0x5e5d84]
|
||||
0x557000: mov eax, dword ptr [eax]
|
||||
0x557002: fld qword ptr [eax + ebx*8 - 0x20]
|
||||
0x557006: mov eax, dword ptr [0x5e5d84]
|
||||
0x55700b: mov eax, dword ptr [eax]
|
||||
0x55700d: fadd qword ptr [eax + ebx*8 - 0x28]
|
||||
0x557011: mov eax, dword ptr [ebp - 8]
|
||||
0x557014: add eax, eax
|
||||
0x557016: lea eax, [eax + eax*2]
|
||||
0x557019: mov edx, dword ptr [0x5e5d84]
|
||||
0x55701f: mov edx, dword ptr [edx]
|
||||
0x557021: fadd qword ptr [edx + eax*8 - 0x18]
|
||||
0x557025: mov eax, dword ptr [0x5e5d84]
|
||||
0x55702a: mov eax, dword ptr [eax]
|
||||
0x55702c: fstp qword ptr [eax + ebx*8 - 0x30]
|
||||
0x557030: wait
|
||||
0x557031: push 0
|
||||
0x557033: push 0
|
||||
0x557035: push 0xbff00000
|
||||
0x55703a: push 0
|
||||
0x55703c: push 0
|
||||
0x55703e: mov ecx, 1
|
||||
0x557043: xor edx, edx
|
||||
0x557045: mov eax, dword ptr [ebp - 8]
|
||||
0x557048: call 0x45f974
|
||||
0x55704d: fstp qword ptr [ebp - 0x60]
|
||||
0x557050: wait
|
||||
0x557051: push 0
|
||||
0x557053: push 0
|
||||
0x557055: push 0
|
||||
0x557057: push 0
|
||||
0x557059: push 0
|
||||
0x55705b: mov ecx, 2
|
||||
0x557060: xor edx, edx
|
||||
0x557062: mov eax, dword ptr [ebp - 8]
|
||||
0x557065: call 0x45f974
|
||||
0x55706a: fstp qword ptr [ebp - 0x10]
|
||||
0x55706d: wait
|
||||
0x55706e: mov eax, dword ptr [0x5e5f40]
|
||||
0x557073: mov edx, dword ptr [ebp - 8]
|
||||
0x557076: mov ecx, dword ptr [eax + edx*4]
|
||||
0x557079: lea eax, [ebp - 0xe8]
|
||||
0x55707f: mov edx, 0x5579f0 ; str='COSTW'
|
||||
0x557084: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x557089: mov edx, dword ptr [ebp - 0xe8]
|
||||
0x55708f: mov eax, dword ptr [0x5e6090]
|
||||
0x557094: mov eax, dword ptr [eax]
|
||||
0x557096: mov eax, dword ptr [eax + 0x20]
|
||||
0x557099: call 0x404770 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x55709e: fsub qword ptr [ebp - 0x10]
|
||||
0x5570a1: fstp qword ptr [ebp - 0x50]
|
||||
0x5570a4: wait
|
||||
0x5570a5: push 0
|
||||
0x5570a7: push -3
|
||||
0x5570a9: fld xword ptr [0x5579f8]
|
||||
0x5570af: fmul qword ptr [ebp - 0x50]
|
||||
0x5570b2: add esp, -0xc
|
||||
0x5570b5: fstp xword ptr [esp]
|
||||
0x5570b8: wait
|
||||
0x5570b9: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x5570be: fstp qword ptr [ebp - 0x18]
|
||||
0x5570c1: wait
|
||||
0x5570c2: push dword ptr [ebp - 0x4c]
|
||||
0x5570c5: push dword ptr [ebp - 0x50]
|
||||
0x5570c8: push 0
|
||||
0x5570ca: push -3
|
||||
0x5570cc: fld qword ptr [ebp - 0x50]
|
||||
0x5570cf: fmul dword ptr [0x557a04] ; f32=1.5
|
||||
0x5570d5: add esp, -0xc
|
||||
0x5570d8: fstp xword ptr [esp]
|
||||
0x5570db: wait
|
||||
0x5570dc: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x5570e1: add esp, -8
|
||||
0x5570e4: fstp qword ptr [esp]
|
||||
0x5570e7: wait
|
||||
0x5570e8: push -3
|
||||
0x5570ea: fld qword ptr [ebp - 0x50]
|
||||
0x5570ed: fmul dword ptr [0x557a08] ; f32=0.5
|
||||
0x5570f3: add esp, -0xc
|
||||
0x5570f6: fstp xword ptr [esp]
|
||||
0x5570f9: wait
|
||||
0x5570fa: call 0x42290c ; DP_COMMON!MROUNDUP
|
||||
0x5570ff: add esp, -8
|
||||
0x557102: fstp qword ptr [esp]
|
||||
0x557105: wait
|
||||
0x557106: fld qword ptr [ebp - 0x50]
|
||||
0x557109: add esp, -0xc
|
||||
0x55710c: fstp xword ptr [esp]
|
||||
0x55710f: wait
|
||||
0x557110: lea edx, [ebp - 0xf0]
|
||||
0x557116: mov eax, 0x557a14 ; str='#,0'
|
||||
0x55711b: call 0x401fd8 ; rtl60!@Sysutils@FormatFloat$qqrx17System@AnsiStringg
|
||||
0x557120: mov ecx, dword ptr [ebp - 0xf0]
|
||||
0x557126: lea eax, [ebp - 0xec]
|
||||
0x55712c: mov edx, 0x557a20 ; str='도급공사비 : '
|
||||
0x557131: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x557136: mov edx, dword ptr [ebp - 0xec]
|
||||
0x55713c: lea ecx, [ebp - 0x18]
|
||||
0x55713f: mov eax, 0x557a38 ; str='목표 금액을 입력하세요.'
|
||||
0x557144: call 0x5523c0
|
||||
0x557149: test al, al
|
||||
0x55714b: jne 0x557157
|
||||
0x55714d: call 0x401220 ; rtl60!@System@@TryFinallyExit$qqrv
|
||||
0x557152: jmp 0x557879
|
||||
0x557157: push 1
|
||||
0x557159: push 5
|
||||
0x55715b: fld qword ptr [ebp - 0x18]
|
||||
0x55715e: fdiv qword ptr [ebp - 0x50]
|
||||
0x557161: add esp, -0xc
|
||||
0x557164: fstp xword ptr [esp]
|
||||
0x557167: wait
|
||||
0x557168: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x55716d: fstp qword ptr [ebp - 0x68]
|
||||
0x557170: wait
|
||||
0x557171: mov eax, dword ptr [0x5e5f40]
|
||||
0x557176: mov edx, dword ptr [ebp - 8]
|
||||
0x557179: mov ecx, dword ptr [eax + edx*4]
|
||||
0x55717c: lea eax, [ebp - 0xf4]
|
||||
0x557182: mov edx, 0x557a58 ; str='MCOST'
|
||||
0x557187: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x55718c: mov edx, dword ptr [ebp - 0xf4]
|
||||
0x557192: mov eax, dword ptr [0x5e6090]
|
||||
0x557197: mov eax, dword ptr [eax]
|
||||
0x557199: mov eax, dword ptr [eax + 0x20]
|
||||
0x55719c: call 0x404770 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x5571a1: fstp qword ptr [ebp - 0xa8]
|
||||
0x5571a7: wait
|
||||
0x5571a8: mov eax, dword ptr [0x5e5f40]
|
||||
0x5571ad: mov edx, dword ptr [ebp - 8]
|
||||
0x5571b0: mov ecx, dword ptr [eax + edx*4]
|
||||
0x5571b3: lea eax, [ebp - 0xf8]
|
||||
0x5571b9: mov edx, 0x557a68 ; str='LCOST'
|
||||
0x5571be: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x5571c3: mov edx, dword ptr [ebp - 0xf8]
|
||||
0x5571c9: mov eax, dword ptr [0x5e6090]
|
||||
0x5571ce: mov eax, dword ptr [eax]
|
||||
0x5571d0: mov eax, dword ptr [eax + 0x20]
|
||||
0x5571d3: call 0x404770 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x5571d8: fstp qword ptr [ebp - 0xb0]
|
||||
0x5571de: wait
|
||||
0x5571df: mov eax, dword ptr [0x5e5f40]
|
||||
0x5571e4: mov edx, dword ptr [ebp - 8]
|
||||
0x5571e7: mov ecx, dword ptr [eax + edx*4]
|
||||
0x5571ea: lea eax, [ebp - 0xfc]
|
||||
0x5571f0: mov edx, 0x557a78 ; str='SCOST'
|
||||
0x5571f5: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
|
||||
0x5571fa: mov edx, dword ptr [ebp - 0xfc]
|
||||
0x557200: mov eax, dword ptr [0x5e6090]
|
||||
0x557205: mov eax, dword ptr [eax]
|
||||
0x557207: mov eax, dword ptr [eax + 0x20]
|
||||
0x55720a: call 0x404770 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
|
||||
0x55720f: fstp qword ptr [ebp - 0xa0]
|
||||
0x557215: wait
|
||||
0x557216: mov eax, dword ptr [0x5e5d84]
|
||||
0x55721b: mov eax, dword ptr [eax]
|
||||
0x55721d: fld qword ptr [eax + ebx*8 - 0x20]
|
||||
0x557221: mov eax, dword ptr [0x5e5d84]
|
||||
0x557226: mov eax, dword ptr [eax]
|
||||
0x557228: fadd qword ptr [eax + ebx*8 - 0x28]
|
||||
0x55722c: mov eax, dword ptr [0x5e5d84]
|
||||
0x557231: mov eax, dword ptr [eax]
|
||||
0x557233: fadd qword ptr [eax + ebx*8 - 0x18]
|
||||
0x557237: fstp qword ptr [ebp - 0xb8]
|
||||
0x55723d: wait
|
||||
0x55723e: mov eax, dword ptr [0x5e5d84]
|
||||
0x557243: mov eax, dword ptr [eax]
|
||||
0x557245: mov edx, dword ptr [ebp - 0xa8]
|
||||
0x55724b: mov dword ptr [eax + ebx*8 - 0x20], edx
|
||||
0x55724f: mov edx, dword ptr [ebp - 0xa4]
|
||||
0x557255: mov dword ptr [eax + ebx*8 - 0x1c], edx
|
||||
0x557259: mov eax, dword ptr [0x5e5d84]
|
||||
0x55725e: mov eax, dword ptr [eax]
|
||||
0x557260: mov edx, dword ptr [ebp - 0xb0]
|
||||
0x557266: mov dword ptr [eax + ebx*8 - 0x28], edx
|
||||
0x55726a: mov edx, dword ptr [ebp - 0xac]
|
||||
0x557270: mov dword ptr [eax + ebx*8 - 0x24], edx
|
||||
0x557274: mov eax, dword ptr [0x5e5d84]
|
||||
0x557279: mov eax, dword ptr [eax]
|
||||
0x55727b: mov edx, dword ptr [ebp - 0xa0]
|
||||
0x557281: mov dword ptr [eax + ebx*8 - 0x18], edx
|
||||
0x557285: mov edx, dword ptr [ebp - 0x9c]
|
||||
0x55728b: mov dword ptr [eax + ebx*8 - 0x14], edx
|
||||
0x55728f: mov eax, dword ptr [0x5e5d84]
|
||||
0x557294: mov eax, dword ptr [eax]
|
||||
0x557296: fld qword ptr [eax + ebx*8 - 0x20]
|
||||
0x55729a: mov eax, dword ptr [0x5e5d84]
|
||||
0x55729f: mov eax, dword ptr [eax]
|
||||
0x5572a1: fadd qword ptr [eax + ebx*8 - 0x28]
|
||||
0x5572a5: mov eax, dword ptr [ebp - 8]
|
||||
0x5572a8: add eax, eax
|
||||
0x5572aa: lea eax, [eax + eax*2]
|
||||
0x5572ad: mov edx, dword ptr [0x5e5d84]
|
||||
0x5572b3: mov edx, dword ptr [edx]
|
||||
0x5572b5: fadd qword ptr [edx + eax*8 - 0x18]
|
||||
0x5572b9: mov eax, dword ptr [0x5e5d84]
|
||||
0x5572be: mov eax, dword ptr [eax]
|
||||
0x5572c0: fstp qword ptr [eax + ebx*8 - 0x30]
|
||||
0x5572c4: wait
|
||||
0x5572c5: push 0
|
||||
0x5572c7: push 0
|
||||
0x5572c9: push 0
|
||||
0x5572cb: push 0
|
||||
0x5572cd: push 0
|
||||
0x5572cf: mov ecx, 1
|
||||
0x5572d4: xor edx, edx
|
||||
0x5572d6: mov eax, dword ptr [ebp - 8]
|
||||
0x5572d9: call 0x45f974
|
||||
0x5572de: fsub qword ptr [ebp - 0x60]
|
||||
0x5572e1: fstp qword ptr [ebp - 0x58]
|
||||
0x5572e4: wait
|
||||
0x5572e5: push 5
|
||||
0x5572e7: mov eax, dword ptr [0x5e5d84]
|
||||
0x5572ec: mov eax, dword ptr [eax]
|
||||
0x5572ee: fld qword ptr [eax + ebx*8 - 0x30]
|
||||
0x5572f2: fdiv qword ptr [ebp - 0x58]
|
||||
0x5572f5: add esp, -0xc
|
||||
0x5572f8: fstp xword ptr [esp]
|
||||
0x5572fb: wait
|
||||
0x5572fc: call 0x42290c ; DP_COMMON!MROUNDUP
|
||||
0x557301: fstp qword ptr [ebp - 0x78]
|
||||
0x557304: wait
|
||||
0x557305: mov esi, 0x1388
|
||||
0x55730a: mov dword ptr [ebp - 0xc0], esi
|
||||
0x557310: fild dword ptr [ebp - 0xc0]
|
||||
0x557316: fdivr qword ptr [ebp - 0x18]
|
||||
0x557319: fcomp dword ptr [0x557a80] ; f32=5000.0
|
||||
0x55731f: fnstsw ax
|
||||
0x557321: sahf
|
||||
0x557322: jae 0x557334
|
||||
0x557324: fld qword ptr [ebp - 0x18]
|
||||
0x557327: fdiv dword ptr [0x557a80] ; f32=5000.0
|
||||
0x55732d: call 0x401078 ; rtl60!@System@@ROUND$qqrv
|
||||
0x557332: mov esi, eax
|
||||
0x557334: push 0
|
||||
0x557336: fld qword ptr [ebp - 0x18]
|
||||
0x557339: fsub qword ptr [ebp - 0x60]
|
||||
0x55733c: mov dword ptr [ebp - 0xc0], esi
|
||||
0x557342: fild dword ptr [ebp - 0xc0]
|
||||
0x557348: fdivr qword ptr [ebp - 0x18]
|
||||
0x55734b: faddp st(1)
|
||||
0x55734d: fmul qword ptr [ebp - 0x78]
|
||||
0x557350: add esp, -0xc
|
||||
0x557353: fstp xword ptr [esp]
|
||||
0x557356: wait
|
||||
0x557357: call 0x42290c ; DP_COMMON!MROUNDUP
|
||||
0x55735c: fstp qword ptr [ebp - 0x48]
|
||||
0x55735f: wait
|
||||
0x557360: push 5
|
||||
0x557362: fld qword ptr [ebp - 0x48]
|
||||
0x557365: mov eax, dword ptr [0x5e5d84]
|
||||
0x55736a: mov eax, dword ptr [eax]
|
||||
0x55736c: fdiv qword ptr [eax + ebx*8 - 0x30]
|
||||
0x557370: add esp, -0xc
|
||||
0x557373: fstp xword ptr [esp]
|
||||
0x557376: wait
|
||||
0x557377: call 0x42290c ; DP_COMMON!MROUNDUP
|
||||
0x55737c: fstp qword ptr [ebp - 0x70]
|
||||
0x55737f: wait
|
||||
0x557380: lea eax, [ebp - 0x11c]
|
||||
0x557386: xor edx, edx
|
||||
0x557388: mov cl, 1
|
||||
0x55738a: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
|
||||
0x55738f: push dword ptr [ebp - 0x110]
|
||||
0x557395: push dword ptr [ebp - 0x114]
|
||||
0x55739b: push dword ptr [ebp - 0x118]
|
||||
0x5573a1: push dword ptr [ebp - 0x11c]
|
||||
0x5573a7: fld qword ptr [ebp - 0x70]
|
||||
0x5573aa: fmul dword ptr [0x557a84] ; f32=100.0
|
||||
0x5573b0: lea eax, [ebp - 0x12c]
|
||||
0x5573b6: call 0x4013d8 ; rtl60!@System@@VarFromReal$qqrv
|
||||
0x5573bb: push dword ptr [ebp - 0x120]
|
||||
0x5573c1: push dword ptr [ebp - 0x124]
|
||||
0x5573c7: push dword ptr [ebp - 0x128]
|
||||
0x5573cd: push dword ptr [ebp - 0x12c]
|
||||
0x5573d3: mov eax, dword ptr [ebp - 4]
|
||||
0x5573d6: mov eax, dword ptr [eax + 0x374]
|
||||
0x5573dc: mov edx, dword ptr [eax]
|
||||
0x5573de: call dword ptr [edx + 0xc4]
|
||||
0x5573e4: push eax
|
||||
0x5573e5: lea eax, [ebp - 0x10c]
|
||||
0x5573eb: push eax
|
||||
0x5573ec: call 0x4228b4 ; DP_COMMON!IIF
|
||||
0x5573f1: lea eax, [ebp - 0x10c]
|
||||
0x5573f7: call 0x4013a0 ; rtl60!@System@@VarToReal$qqrrx14System@Variant
|
||||
0x5573fc: fstp qword ptr [ebp - 0x20]
|
||||
0x5573ff: wait
|
||||
0x557400: fld qword ptr [ebp - 0x18]
|
||||
0x557403: fadd qword ptr [ebp - 0x30]
|
||||
0x557406: fstp qword ptr [ebp - 0x28]
|
||||
0x557409: wait
|
||||
0x55740a: mov ebx, 1
|
||||
0x55740f: cmp ebx, 1
|
||||
0x557412: je 0x55744d
|
||||
0x557414: fld qword ptr [ebp - 0x88]
|
||||
0x55741a: fcomp qword ptr [ebp - 0x28]
|
||||
0x55741d: fnstsw ax
|
||||
0x55741f: sahf
|
||||
0x557420: jb 0x55744d
|
||||
0x557422: fld qword ptr [ebp - 0x88]
|
||||
0x557428: fsub qword ptr [ebp - 0x18]
|
||||
0x55742b: fdiv qword ptr [ebp - 0x18]
|
||||
0x55742e: fabs
|
||||
0x557430: mov dword ptr [ebp - 0xc0], esi
|
||||
0x557436: fild dword ptr [ebp - 0xc0]
|
||||
0x55743c: fdivr dword ptr [0x557a88] ; f32=1.0
|
||||
0x557442: fcompp
|
||||
0x557444: fnstsw ax
|
||||
0x557446: sahf
|
||||
0x557447: jae 0x55760d
|
||||
0x55744d: cmp ebx, 1
|
||||
0x557450: jle 0x5574b4
|
||||
0x557452: fld qword ptr [ebp - 0x88]
|
||||
0x557458: fcomp qword ptr [ebp - 0x28]
|
||||
0x55745b: fnstsw ax
|
||||
0x55745d: sahf
|
||||
0x55745e: jae 0x55748f
|
||||
0x557460: push 0
|
||||
0x557462: push 5
|
||||
0x557464: mov eax, esi
|
||||
0x557466: add eax, eax
|
||||
0x557468: mov dword ptr [ebp - 0xc0], eax
|
||||
0x55746e: fild dword ptr [ebp - 0xc0]
|
||||
0x557474: fdivr dword ptr [0x557a88] ; f32=1.0
|
||||
0x55747a: fadd qword ptr [ebp - 0x70]
|
||||
0x55747d: add esp, -0xc
|
||||
0x557480: fstp xword ptr [esp]
|
||||
0x557483: wait
|
||||
0x557484: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x557489: fstp qword ptr [ebp - 0x70]
|
||||
0x55748c: wait
|
||||
0x55748d: jmp 0x5574b4
|
||||
0x55748f: push 0
|
||||
0x557491: push 5
|
||||
0x557493: fld qword ptr [ebp - 0x88]
|
||||
0x557499: fsub qword ptr [ebp - 0x18]
|
||||
0x55749c: fabs
|
||||
0x55749e: fdiv qword ptr [ebp - 0x18]
|
||||
0x5574a1: fsubr qword ptr [ebp - 0x70]
|
||||
0x5574a4: add esp, -0xc
|
||||
0x5574a7: fstp xword ptr [esp]
|
||||
0x5574aa: wait
|
||||
0x5574ab: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x5574b0: fstp qword ptr [ebp - 0x70]
|
||||
0x5574b3: wait
|
||||
0x5574b4: push 0
|
||||
0x5574b6: push 0
|
||||
0x5574b8: fld qword ptr [ebp - 0xa8]
|
||||
0x5574be: fmul qword ptr [ebp - 0x70]
|
||||
0x5574c1: add esp, -0xc
|
||||
0x5574c4: fstp xword ptr [esp]
|
||||
0x5574c7: wait
|
||||
0x5574c8: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x5574cd: mov edi, dword ptr [ebp - 8]
|
||||
0x5574d0: add edi, edi
|
||||
0x5574d2: lea edi, [edi + edi*2]
|
||||
0x5574d5: mov eax, dword ptr [0x5e5d84]
|
||||
0x5574da: mov eax, dword ptr [eax]
|
||||
0x5574dc: fstp qword ptr [eax + edi*8 - 0x20]
|
||||
0x5574e0: wait
|
||||
0x5574e1: push 0
|
||||
0x5574e3: push 0
|
||||
0x5574e5: fld qword ptr [ebp - 0xb0]
|
||||
0x5574eb: fmul qword ptr [ebp - 0x70]
|
||||
0x5574ee: add esp, -0xc
|
||||
0x5574f1: fstp xword ptr [esp]
|
||||
0x5574f4: wait
|
||||
0x5574f5: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x5574fa: mov eax, dword ptr [0x5e5d84]
|
||||
0x5574ff: mov eax, dword ptr [eax]
|
||||
0x557501: fstp qword ptr [eax + edi*8 - 0x28]
|
||||
0x557505: wait
|
||||
0x557506: push 0
|
||||
0x557508: push 0
|
||||
0x55750a: fld qword ptr [ebp - 0xa0]
|
||||
0x557510: fmul qword ptr [ebp - 0x70]
|
||||
0x557513: add esp, -0xc
|
||||
0x557516: fstp xword ptr [esp]
|
||||
0x557519: wait
|
||||
0x55751a: call 0x422904 ; DP_COMMON!MROUNDUD
|
||||
0x55751f: mov eax, dword ptr [0x5e5d84]
|
||||
0x557524: mov eax, dword ptr [eax]
|
||||
0x557526: fstp qword ptr [eax + edi*8 - 0x18]
|
||||
0x55752a: wait
|
||||
0x55752b: mov eax, dword ptr [0x5e5d84]
|
||||
0x557530: mov eax, dword ptr [eax]
|
||||
0x557532: fld qword ptr [eax + edi*8 - 0x20]
|
||||
0x557536: mov eax, dword ptr [0x5e5d84]
|
||||
0x55753b: mov eax, dword ptr [eax]
|
||||
0x55753d: fadd qword ptr [eax + edi*8 - 0x28]
|
||||
0x557541: mov eax, dword ptr [ebp - 8]
|
||||
0x557544: add eax, eax
|
||||
0x557546: lea eax, [eax + eax*2]
|
||||
0x557549: mov edx, dword ptr [0x5e5d84]
|
||||
0x55754f: mov edx, dword ptr [edx]
|
||||
0x557551: fadd qword ptr [edx + eax*8 - 0x18]
|
||||
0x557555: mov eax, dword ptr [0x5e5d84]
|
||||
0x55755a: mov eax, dword ptr [eax]
|
||||
0x55755c: fstp qword ptr [eax + edi*8 - 0x30]
|
||||
0x557560: wait
|
||||
0x557561: lea eax, [ebp - 0x14c]
|
||||
0x557567: xor edx, edx
|
||||
0x557569: mov cl, 1
|
||||
0x55756b: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
|
||||
0x557570: push dword ptr [ebp - 0x140]
|
||||
0x557576: push dword ptr [ebp - 0x144]
|
||||
0x55757c: push dword ptr [ebp - 0x148]
|
||||
0x557582: push dword ptr [ebp - 0x14c]
|
||||
0x557588: fld qword ptr [ebp - 0x70]
|
||||
0x55758b: fmul dword ptr [0x557a84] ; f32=100.0
|
||||
0x557591: lea eax, [ebp - 0x15c]
|
||||
0x557597: call 0x4013d8 ; rtl60!@System@@VarFromReal$qqrv
|
||||
0x55759c: push dword ptr [ebp - 0x150]
|
||||
0x5575a2: push dword ptr [ebp - 0x154]
|
||||
0x5575a8: push dword ptr [ebp - 0x158]
|
||||
0x5575ae: push dword ptr [ebp - 0x15c]
|
||||
0x5575b4: mov eax, dword ptr [ebp - 4]
|
||||
0x5575b7: mov eax, dword ptr [eax + 0x374]
|
||||
0x5575bd: mov edx, dword ptr [eax]
|
||||
0x5575bf: call dword ptr [edx + 0xc4]
|
||||
0x5575c5: push eax
|
||||
0x5575c6: lea eax, [ebp - 0x13c]
|
||||
0x5575cc: push eax
|
||||
0x5575cd: call 0x4228b4 ; DP_COMMON!IIF
|
||||
0x5575d2: lea eax, [ebp - 0x13c]
|
||||
0x5575d8: call 0x4013a0 ; rtl60!@System@@VarToReal$qqrrx14System@Variant
|
||||
0x5575dd: fstp qword ptr [ebp - 0x20]
|
||||
0x5575e0: wait
|
||||
0x5575e1: push 0
|
||||
0x5575e3: push 0
|
||||
0x5575e5: push dword ptr [ebp - 0x1c]
|
||||
0x5575e8: push dword ptr [ebp - 0x20]
|
||||
0x5575eb: push 0
|
||||
0x5575ed: mov ecx, 1
|
||||
0x5575f2: xor edx, edx
|
||||
0x5575f4: mov eax, dword ptr [ebp - 8]
|
||||
0x5575f7: call 0x45f974
|
||||
0x5575fc: fstp qword ptr [ebp - 0x88]
|
||||
0x557602: wait
|
||||
0x557603: inc ebx
|
||||
0x557604: cmp ebx, 0xb
|
||||
0x557607: jne 0x55740f
|
||||
0x55760d: push 0
|
||||
0x55760f: push 0
|
||||
0x557611: push dword ptr [ebp - 0x1c]
|
||||
0x557614: push dword ptr [ebp - 0x20]
|
||||
0x557617: push 0
|
||||
0x557619: mov ecx, 3
|
||||
0x55761e: xor edx, edx
|
||||
0x557620: mov eax, dword ptr [ebp - 8]
|
||||
0x557623: call 0x45f974
|
||||
0x557628: fstp qword ptr [ebp - 0x80]
|
||||
0x55762b: wait
|
||||
0x55762c: fld qword ptr [ebp - 0x80]
|
||||
0x55762f: fcomp qword ptr [ebp - 0x50]
|
||||
0x557632: fnstsw ax
|
||||
0x557634: sahf
|
||||
0x557635: jb 0x55764f
|
||||
0x557637: xor eax, eax
|
||||
0x557639: mov dword ptr [ebp - 0x70], eax
|
||||
0x55763c: mov dword ptr [ebp - 0x6c], 0x3ff00000
|
||||
0x557643: mov eax, dword ptr [ebp - 0x50]
|
||||
0x557646: mov dword ptr [ebp - 0x80], eax
|
||||
0x557649: mov eax, dword ptr [ebp - 0x4c]
|
||||
0x55764c: mov dword ptr [ebp - 0x7c], eax
|
||||
0x55764f: push 0x557910
|
||||
0x557654: push 0x7f02
|
||||
0x557659: push 1
|
||||
0x55765b: mov eax, 0x557a94 ; str='적용율적용(&Y)'
|
||||
0x557660: mov dword ptr [ebp - 0x164], eax
|
||||
0x557666: mov eax, 0x557aac ; str='아니오(&N)'
|
||||
0x55766b: mov dword ptr [ebp - 0x160], eax
|
||||
0x557671: lea eax, [ebp - 0x164]
|
||||
0x557677: push eax
|
||||
0x557678: push 1
|
||||
0x55767a: push 0x557ac0
|
||||
0x55767f: fld qword ptr [ebp - 0x18]
|
||||
0x557682: add esp, -0xc
|
||||
0x557685: fstp xword ptr [esp]
|
||||
0x557688: wait
|
||||
0x557689: lea edx, [ebp - 0x16c]
|
||||
0x55768f: mov eax, 0x557a14 ; str='#,0'
|
||||
0x557694: call 0x401fd8 ; rtl60!@Sysutils@FormatFloat$qqrx17System@AnsiStringg
|
||||
0x557699: push dword ptr [ebp - 0x16c]
|
||||
0x55769f: push 0x557ad8
|
||||
0x5576a4: push 0x557ad8
|
||||
0x5576a9: push 0x557ae4
|
||||
0x5576ae: fld qword ptr [ebp - 0x70]
|
||||
0x5576b1: fmul dword ptr [0x557a84] ; f32=100.0
|
||||
0x5576b7: add esp, -0xc
|
||||
0x5576ba: fstp xword ptr [esp]
|
||||
0x5576bd: wait
|
||||
0x5576be: lea edx, [ebp - 0x170]
|
||||
0x5576c4: mov eax, 0x557afc ; str='0.######%'
|
||||
0x5576c9: call 0x401fd8 ; rtl60!@Sysutils@FormatFloat$qqrx17System@AnsiStringg
|
||||
0x5576ce: push dword ptr [ebp - 0x170]
|
||||
0x5576d4: push 0x557b10
|
||||
0x5576d9: push 0x557ad8
|
||||
0x5576de: push 0x557ad8
|
||||
0x5576e3: push 0x557b24
|
||||
0x5576e8: fld qword ptr [ebp - 0x88]
|
||||
0x5576ee: add esp, -0xc
|
||||
0x5576f1: fstp xword ptr [esp]
|
||||
0x5576f4: wait
|
||||
0x5576f5: lea edx, [ebp - 0x174]
|
||||
0x5576fb: mov eax, 0x557a14 ; str='#,0'
|
||||
0x557700: call 0x401fd8 ; rtl60!@Sysutils@FormatFloat$qqrx17System@AnsiStringg
|
||||
0x557705: push dword ptr [ebp - 0x174]
|
||||
0x55770b: push 0x557b3c
|
||||
0x557710: push 0x557ad8
|
||||
0x557715: push 0x557b54
|
||||
0x55771a: fld qword ptr [ebp - 0x80]
|
||||
0x55771d: add esp, -0xc
|
||||
0x557720: fstp xword ptr [esp]
|
||||
0x557723: wait
|
||||
0x557724: lea edx, [ebp - 0x178]
|
||||
0x55772a: mov eax, 0x557a14 ; str='#,0'
|
||||
0x55772f: call 0x401fd8 ; rtl60!@Sysutils@FormatFloat$qqrx17System@AnsiStringg
|
||||
0x557734: push dword ptr [ebp - 0x178]
|
||||
0x55773a: push 0x557ad8
|
||||
0x55773f: push 0x557b6c
|
||||
0x557744: fld qword ptr [ebp - 0x80]
|
||||
0x557747: fadd qword ptr [ebp - 0x10]
|
||||
0x55774a: add esp, -0xc
|
||||
0x55774d: fstp xword ptr [esp]
|
||||
0x557750: wait
|
||||
0x557751: lea edx, [ebp - 0x17c]
|
||||
0x557757: mov eax, 0x557a14 ; str='#,0'
|
||||
0x55775c: call 0x401fd8 ; rtl60!@Sysutils@FormatFloat$qqrx17System@AnsiStringg
|
||||
0x557761: push dword ptr [ebp - 0x17c]
|
||||
0x557767: push 0x557ad8
|
||||
0x55776c: push 0x557ad8
|
||||
0x557771: push 0x557b84
|
||||
0x557776: push 0x557ad8
|
||||
0x55777b: push 0x557ad8
|
||||
0x557780: push 0x557bb8
|
||||
0x557785: push 0x557ad8
|
||||
0x55778a: push 0x557c08
|
||||
0x55778f: push 0x557ad8
|
||||
0x557794: push 0x557c50
|
||||
0x557799: push 0x557ad8
|
||||
0x55779e: push 0x557ad8
|
||||
0x5577a3: push 0x557c78
|
||||
0x5577a8: lea eax, [ebp - 0x168]
|
||||
0x5577ae: mov edx, 0x1f
|
||||
0x5577b3: call 0x4012b8 ; rtl60!@System@@LStrCatN$qqrv
|
||||
0x5577b8: mov edx, dword ptr [ebp - 0x168]
|
||||
0x5577be: mov eax, dword ptr [0x5fd480]
|
||||
0x5577c3: mov eax, dword ptr [eax]
|
||||
0x5577c5: mov eax, dword ptr [eax + 0x30]
|
||||
0x5577c8: mov ecx, 0x557cc4 ; str='계약내역 목표값 약식산출'
|
||||
0x5577cd: call 0x44b680
|
||||
0x5577d2: cmp ax, 1
|
||||
0x5577d6: jne 0x55784e
|
||||
0x5577d8: fld qword ptr [ebp - 0x70]
|
||||
0x5577db: fmul dword ptr [0x557a84] ; f32=100.0
|
||||
0x5577e1: add esp, -0xc
|
||||
0x5577e4: fstp xword ptr [esp]
|
||||
0x5577e7: wait
|
||||
0x5577e8: mov eax, dword ptr [ebp - 4]
|
||||
0x5577eb: mov eax, dword ptr [eax + 0x320]
|
||||
0x5577f1: call 0x404b98 ; RealGrid6!@Urnedit@TwCustomNumEdit@SetValue$qqrg
|
||||
0x5577f6: mov eax, dword ptr [ebp - 4]
|
||||
0x5577f9: mov eax, dword ptr [eax + 0x320]
|
||||
0x5577ff: call 0x404b90 ; RealGrid6!@Urnedit@TwCustomNumEdit@GetValue$qqrv
|
||||
0x557804: add esp, -0xc
|
||||
0x557807: fstp xword ptr [esp]
|
||||
0x55780a: wait
|
||||
0x55780b: mov eax, dword ptr [ebp - 4]
|
||||
0x55780e: mov eax, dword ptr [eax + 0x324]
|
||||
0x557814: call 0x404b98 ; RealGrid6!@Urnedit@TwCustomNumEdit@SetValue$qqrg
|
||||
0x557819: mov eax, dword ptr [ebp - 4]
|
||||
0x55781c: mov eax, dword ptr [eax + 0x320]
|
||||
0x557822: call 0x404b90 ; RealGrid6!@Urnedit@TwCustomNumEdit@GetValue$qqrv
|
||||
0x557827: add esp, -0xc
|
||||
0x55782a: fstp xword ptr [esp]
|
||||
0x55782d: wait
|
||||
0x55782e: mov eax, dword ptr [ebp - 4]
|
||||
0x557831: mov eax, dword ptr [eax + 0x328]
|
||||
0x557837: call 0x404b98 ; RealGrid6!@Urnedit@TwCustomNumEdit@SetValue$qqrg
|
||||
0x55783c: mov eax, dword ptr [ebp - 4]
|
||||
0x55783f: mov eax, dword ptr [eax + 0x368]
|
||||
0x557845: mov si, 0xffef
|
||||
0x557849: call 0x401198 ; rtl60!@System@@CallDynaInst$qqrv
|
||||
0x55784e: xor eax, eax
|
||||
0x557850: pop edx
|
||||
0x557851: pop ecx
|
||||
0x557852: pop ecx
|
||||
0x557853: mov dword ptr fs:[eax], edx
|
||||
0x557856: push 0x557879
|
||||
0x55785b: mov eax, dword ptr [0x5e5d7c]
|
||||
0x557860: call 0x401250 ; rtl60!@System@@LStrClr$qqrpv
|
||||
0x557865: mov eax, dword ptr [0x5e6090]
|
||||
0x55786a: mov eax, dword ptr [eax]
|
||||
0x55786c: xor edx, edx
|
||||
+344
@@ -0,0 +1,344 @@
|
||||
===== dpc_mroundup.json ev_20fc29eeef8cdcd87391df8cec4423521e6a8a6f322cb2275fe6521d022ea9ce
|
||||
|
||||
|
||||
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
||||
|
||||
|
||||
|
||||
void MROUNDUP(void)
|
||||
|
||||
|
||||
|
||||
{
|
||||
|
||||
float10 fVar1;
|
||||
|
||||
undefined4 **ppuVar2;
|
||||
|
||||
undefined2 uVar3;
|
||||
|
||||
undefined2 uVar4;
|
||||
|
||||
char cVar5;
|
||||
|
||||
int *piVar6;
|
||||
|
||||
int iVar7;
|
||||
|
||||
undefined2 extraout_var;
|
||||
|
||||
int iVar8;
|
||||
|
||||
char *unaff_ESI;
|
||||
|
||||
undefined4 *unaff_EDI;
|
||||
|
||||
int iVar9;
|
||||
|
||||
int *in_FS_OFFSET;
|
||||
|
||||
unkbyte10 in_ST0;
|
||||
|
||||
float10 fVar10;
|
||||
|
||||
float10 in_ST1;
|
||||
|
||||
float10 in_ST2;
|
||||
|
||||
undefined4 in_stack_00000004;
|
||||
|
||||
undefined4 in_stack_00000008;
|
||||
|
||||
undefined2 in_stack_0000000c;
|
||||
|
||||
uint in_stack_00000010;
|
||||
|
||||
undefined4 **local_a8 [2];
|
||||
|
||||
int local_a0;
|
||||
|
||||
undefined4 local_9c;
|
||||
|
||||
undefined4 local_98;
|
||||
|
||||
undefined *local_90;
|
||||
|
||||
undefined local_88 [16];
|
||||
|
||||
int local_78;
|
||||
|
||||
undefined4 local_74;
|
||||
|
||||
undefined4 uStackY_70;
|
||||
|
||||
undefined4 uStackY_6c;
|
||||
|
||||
undefined4 **local_68;
|
||||
|
||||
int local_60;
|
||||
|
||||
undefined4 *local_5c;
|
||||
|
||||
undefined4 *local_58;
|
||||
|
||||
undefined *puVar11;
|
||||
|
||||
char *pcVar12;
|
||||
|
||||
int local_48;
|
||||
|
||||
char *local_44;
|
||||
|
||||
undefined4 local_40;
|
||||
|
||||
undefined2 local_3c;
|
||||
|
||||
undefined2 uStack_3a;
|
||||
|
||||
undefined *puStack_38;
|
||||
|
||||
char *pcStack_34;
|
||||
|
||||
undefined4 ***local_30;
|
||||
|
||||
undefined2 local_2c;
|
||||
|
||||
undefined2 uStack_2a;
|
||||
|
||||
int iStack_28;
|
||||
|
||||
undefined2 uStack_24;
|
||||
|
||||
undefined2 uStack_22;
|
||||
|
||||
undefined4 local_20;
|
||||
|
||||
|
||||
|
||||
/* 0x547ac 56 MROUNDUP */
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
iVar8 = 0x14;
|
||||
|
||||
do {
|
||||
|
||||
iVar8 = iVar8 + -1;
|
||||
|
||||
} while (iVar8 != 0);
|
||||
|
||||
uStack_24 = 0x4cff;
|
||||
|
||||
uStack_22 = 0x45;
|
||||
|
||||
iStack_28 = *in_FS_OFFSET;
|
||||
|
||||
*in_FS_OFFSET = (int)&iStack_28;
|
||||
|
||||
fVar10 = ABS((float10)CONCAT28(in_stack_0000000c,CONCAT44(in_stack_00000008,in_stack_00000004)));
|
||||
|
||||
pcStack_34 = SUB104(fVar10,0);
|
||||
|
||||
local_30 = (undefined4 ***)((unkuint10)fVar10 >> 0x20);
|
||||
|
||||
local_2c = (undefined2)((unkuint10)fVar10 >> 0x40);
|
||||
|
||||
puStack_38 = (undefined *)0x4547e6;
|
||||
|
||||
FUN_0040a19c("0.##########",(int *)&stack0xffffffe8);
|
||||
|
||||
local_2c = SUB42(unaff_ESI,0);
|
||||
|
||||
uVar3 = local_2c;
|
||||
|
||||
uStack_2a = (undefined2)((uint)unaff_ESI >> 0x10);
|
||||
|
||||
uVar4 = uStack_2a;
|
||||
|
||||
local_30 = &local_30;
|
||||
|
||||
pcStack_34 = (char *)0x4547f3;
|
||||
|
||||
EXTTOSTR();
|
||||
|
||||
pcStack_34 = (char *)0x4547fe;
|
||||
|
||||
FUN_004045bc((int *)&stack0xffffffe8,(int)local_30);
|
||||
|
||||
if (_DAT_00454d2c <
|
||||
|
||||
(float10)CONCAT28(in_stack_0000000c,CONCAT44(in_stack_00000008,in_stack_00000004))) {
|
||||
|
||||
pcStack_34 = (char *)0x45481e;
|
||||
|
||||
FUN_00404828((int *)&pcStack_34,(undefined4 *)unaff_ESI,(undefined4 *)&DAT_00454d40);
|
||||
|
||||
pcVar12 = pcStack_34;
|
||||
|
||||
pcStack_34 = (char *)0x45482d;
|
||||
|
||||
piVar6 = FUN_0040b1d0((int *)&DAT_00407b00,'\x01',(undefined4 *)pcVar12);
|
||||
|
||||
pcStack_34 = (char *)0x454832;
|
||||
|
||||
FUN_00403efc((int)piVar6);
|
||||
|
||||
}
|
||||
|
||||
pcStack_34 = (char *)0x45483f;
|
||||
|
||||
iVar8 = FUN_00404b18(".",unaff_ESI);
|
||||
|
||||
if (0 < iVar8) {
|
||||
|
||||
pcStack_34 = (char *)0x45484d;
|
||||
|
||||
iVar7 = FUN_004047dc((int)unaff_ESI);
|
||||
|
||||
if (iVar7 - iVar8 < 0xb) {
|
||||
|
||||
pcStack_34 = (char *)0x45485c;
|
||||
|
||||
iVar7 = FUN_004047dc((int)unaff_ESI);
|
||||
|
||||
if (0 < iVar7) {
|
||||
|
||||
iVar9 = 1;
|
||||
|
||||
do {
|
||||
|
||||
if ((byte)(unaff_ESI[iVar9 + -1] - 0x31U) < 9) {
|
||||
|
||||
pcStack_34 = (char *)0x45487c;
|
||||
|
||||
iVar7 = FUN_004047dc((int)unaff_ESI);
|
||||
|
||||
if (iVar7 - iVar9 < 0xb) {
|
||||
|
||||
iVar8 = 0;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
iVar9 = iVar9 + 1;
|
||||
|
||||
iVar7 = iVar7 + -1;
|
||||
|
||||
} while (iVar7 != 0);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (iVar8 == 0) {
|
||||
|
||||
local_2c = 0;
|
||||
|
||||
uStack_2a = 0;
|
||||
|
||||
iStack_28 = 0;
|
||||
|
||||
uStack_24 = 0;
|
||||
|
||||
if (-1 < (int)in_stack_00000010) {
|
||||
|
||||
puStack_38 = &DAT_00454d74;
|
||||
|
||||
local_3c = 0x48c6;
|
||||
|
||||
uStack_3a = 0x45;
|
||||
|
||||
pcStack_34 = unaff_ESI;
|
||||
|
||||
cVar5 = MPOS();
|
||||
|
||||
if (cVar5 == '\0') goto LAB_00454cb4;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
in_ST1 = in_ST2;
|
||||
|
||||
if (iVar8 - 2U < 8) {
|
||||
|
||||
pcStack_34 = (char *)0x4002;
|
||||
|
||||
local_3c = 0;
|
||||
|
||||
uStack_3a = 0;
|
||||
|
||||
puStack_38 = (undefined *)(iVar8 + -0xd);
|
||||
|
||||
fVar10 = (float10)(int)puStack_38;
|
||||
|
||||
local_48 = SUB104(fVar10,0);
|
||||
|
||||
local_44 = (char *)((unkuint10)fVar10 >> 0x20);
|
||||
|
||||
local_40._0_2_ = (undefined2)((unkuint10)fVar10 >> 0x40);
|
||||
|
||||
FUN_0042983c();
|
||||
|
||||
local_2c = (undefined2)in_ST0;
|
||||
|
||||
uStack_2a = (undefined2)((unkuint10)in_ST0 >> 0x10);
|
||||
|
||||
iStack_28 = (int)((unkuint10)in_ST0 >> 0x20);
|
||||
|
||||
uStack_24 = (undefined2)((unkuint10)in_ST0 >> 0x40);
|
||||
|
||||
}
|
||||
|
||||
else if (iVar8 - 10U < 4) {
|
||||
|
||||
pcStack_34 = (char *)0x4002;
|
||||
|
||||
puStack_38 = (undefined *)0xa0000000;
|
||||
|
||||
local_3c = 0;
|
||||
|
||||
uStack_3a = 0;
|
||||
|
||||
local_40._0_2_ = 0xc001;
|
||||
|
||||
local_40._2_2_ = 0;
|
||||
|
||||
local_44 = (char *)0x80000000;
|
||||
|
||||
local_48 = 0;
|
||||
|
||||
FUN_0042983c();
|
||||
|
||||
local_2c = (undefined2)in_ST0;
|
||||
|
||||
uStack_2a = (undefined2)((unkuint10)in_ST0 >> 0x10);
|
||||
|
||||
iStack_28 = (int)((unkuint10)in_ST0 >> 0x20);
|
||||
|
||||
uStack_24 = (undefined2)((unkuint10)in_ST0 >> 0x40);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
pcStack_34 = (char *)0x4002;
|
||||
|
||||
puStack_38 = (undefined *)0xa0000000;
|
||||
|
||||
local_3c = 0;
|
||||
|
||||
uStack_3a = 0;
|
||||
|
||||
local_40._0_2_ = 0xc002;
|
||||
|
||||
local_40._2_2_ = 0;
|
||||
|
||||
local_44 = (char *)0x90000000;
|
||||
+674
@@ -0,0 +1,674 @@
|
||||
===== main_conv.json ev_cfae2c4ebf15d07c7e603c57ba08d1b6e50c6e356e171b72aa1f520ffc8be5b0
|
||||
|
||||
|
||||
void FUN_00554be0(char *param_1,undefined4 param_2,undefined4 param_3,char *param_4)
|
||||
|
||||
|
||||
|
||||
{
|
||||
|
||||
char cVar1;
|
||||
|
||||
undefined4 uVar2;
|
||||
|
||||
int iVar3;
|
||||
|
||||
char *pcVar4;
|
||||
|
||||
undefined4 *puVar5;
|
||||
|
||||
char *pcVar6;
|
||||
|
||||
undefined4 *in_FS_OFFSET;
|
||||
|
||||
byte bVar7;
|
||||
|
||||
float10 in_ST0;
|
||||
|
||||
float10 fVar8;
|
||||
|
||||
float10 in_ST1;
|
||||
|
||||
float10 in_ST2;
|
||||
|
||||
float10 in_ST3;
|
||||
|
||||
float10 in_ST4;
|
||||
|
||||
float10 in_ST5;
|
||||
|
||||
float10 in_ST6;
|
||||
|
||||
undefined4 local_318;
|
||||
|
||||
undefined1 local_314 [16];
|
||||
|
||||
undefined1 local_304 [16];
|
||||
|
||||
undefined1 local_2f4 [16];
|
||||
|
||||
undefined1 local_2e4 [16];
|
||||
|
||||
undefined4 local_2d4;
|
||||
|
||||
char local_2d0 [16];
|
||||
|
||||
undefined4 local_2c0;
|
||||
|
||||
char local_2bc [16];
|
||||
|
||||
undefined4 local_2ac;
|
||||
|
||||
char local_2a8 [16];
|
||||
|
||||
undefined4 local_298;
|
||||
|
||||
char local_294 [16];
|
||||
|
||||
undefined1 local_284 [16];
|
||||
|
||||
undefined1 local_274 [16];
|
||||
|
||||
undefined1 local_264 [16];
|
||||
|
||||
undefined1 local_254 [16];
|
||||
|
||||
undefined1 local_244 [16];
|
||||
|
||||
undefined1 local_234 [16];
|
||||
|
||||
char *local_224;
|
||||
|
||||
undefined1 local_220 [16];
|
||||
|
||||
undefined1 local_210 [16];
|
||||
|
||||
undefined1 local_200 [16];
|
||||
|
||||
undefined1 local_1f0 [16];
|
||||
|
||||
undefined1 local_1e0 [16];
|
||||
|
||||
undefined1 local_1d0 [16];
|
||||
|
||||
undefined1 local_1c0 [16];
|
||||
|
||||
undefined1 local_1b0 [256];
|
||||
|
||||
undefined1 local_b0 [16];
|
||||
|
||||
undefined4 local_a0;
|
||||
|
||||
char *local_9c;
|
||||
|
||||
undefined4 local_98;
|
||||
|
||||
undefined1 local_94 [16];
|
||||
|
||||
undefined1 local_84 [8];
|
||||
|
||||
undefined4 uStack_7c;
|
||||
|
||||
undefined1 auStack_78 [12];
|
||||
|
||||
undefined4 uStack_6c;
|
||||
|
||||
undefined4 uStack_68;
|
||||
|
||||
undefined8 local_64;
|
||||
|
||||
undefined2 uStack_5c;
|
||||
|
||||
undefined2 uStack_5a;
|
||||
|
||||
undefined4 uStack_58;
|
||||
|
||||
undefined4 local_54;
|
||||
|
||||
undefined1 *puStack_50;
|
||||
|
||||
int iStack_4c;
|
||||
|
||||
undefined2 uStack_48;
|
||||
|
||||
undefined2 uStack_46;
|
||||
|
||||
char *local_44;
|
||||
|
||||
char *local_40;
|
||||
|
||||
char *local_3c;
|
||||
|
||||
char *local_38;
|
||||
|
||||
undefined4 local_34;
|
||||
|
||||
char *local_30;
|
||||
|
||||
char *local_2c;
|
||||
|
||||
undefined4 local_28;
|
||||
|
||||
char *local_24;
|
||||
|
||||
char *local_20;
|
||||
|
||||
char *local_c;
|
||||
|
||||
char *local_8;
|
||||
|
||||
|
||||
|
||||
bVar7 = 0;
|
||||
|
||||
iVar3 = 0x62;
|
||||
|
||||
do {
|
||||
|
||||
iVar3 = iVar3 + -1;
|
||||
|
||||
} while (iVar3 != 0);
|
||||
|
||||
local_20 = (char *)0x554bfe;
|
||||
|
||||
local_8 = param_1;
|
||||
|
||||
_System__LStrAddRef_qqrpv(param_1);
|
||||
|
||||
pcVar4 = param_4 + -0x270;
|
||||
|
||||
local_24 = &LAB_00555ae8;
|
||||
|
||||
local_28 = *in_FS_OFFSET;
|
||||
|
||||
*in_FS_OFFSET = &local_28;
|
||||
|
||||
iVar3 = 0;
|
||||
|
||||
if ((param_4[-0x275] == '\0') || (local_20 = &stack0xfffffffc, *(double *)PTR_DAT_005e6020 != 0.0)
|
||||
|
||||
) {
|
||||
|
||||
cVar1 = *local_8;
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
switch(cVar1) {
|
||||
|
||||
case 'B':
|
||||
|
||||
case 'D':
|
||||
|
||||
case 'X':
|
||||
|
||||
if (param_4[-0x275] == '\0') {
|
||||
|
||||
iVar3 = 1;
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
if (*(double *)PTR_DAT_005e6020 != 0.0) {
|
||||
|
||||
local_2c = (char *)0x554d44;
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
_System__LStrFromChar_qqrr17System_AnsiStringc(&local_44,cVar1);
|
||||
|
||||
local_2c = (char *)0x554d51;
|
||||
|
||||
iVar3 = _System__LStrPos_qqrv(local_44,"WBXDMLS");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'L':
|
||||
|
||||
case 'M':
|
||||
|
||||
case 'S':
|
||||
|
||||
case 'W':
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
if (param_4[-0x276] != '\0') {
|
||||
|
||||
local_2c = (char *)0x554cbb;
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
_System__VarFromInt_qqrr14System_Variantxixi(&local_2c,1,1);
|
||||
|
||||
local_2c = local_20;
|
||||
|
||||
local_30 = local_24;
|
||||
|
||||
local_34._0_2_ = (undefined2)local_28;
|
||||
|
||||
local_34._2_2_ = (undefined2)((uint)local_28 >> 0x10);
|
||||
|
||||
local_38 = local_20;
|
||||
|
||||
local_3c = (char *)0x554cd1;
|
||||
|
||||
_System__LStrFromChar_qqrr17System_AnsiStringc(&local_40,cVar1);
|
||||
|
||||
local_3c = (char *)0x554cde;
|
||||
|
||||
uVar2 = _System__LStrPos_qqrv(local_40,"WBXDMLS");
|
||||
|
||||
local_3c = (char *)0x554cea;
|
||||
|
||||
_System__VarFromInt_qqrr14System_Variantxixi(&local_3c,uVar2,0xfc);
|
||||
|
||||
local_3c = local_30;
|
||||
|
||||
local_40 = (char *)CONCAT22(local_34._2_2_,(undefined2)local_34);
|
||||
|
||||
local_44 = local_38;
|
||||
|
||||
uStack_48 = SUB42(local_30,0);
|
||||
|
||||
uStack_46 = (undefined2)((uint)local_30 >> 0x10);
|
||||
|
||||
iStack_4c = CONCAT31((int3)((uint)param_4 >> 8),param_4[-0x275]);
|
||||
|
||||
puStack_50 = &stack0xffffffe4;
|
||||
|
||||
local_54 = 0x554d09;
|
||||
|
||||
IIF();
|
||||
|
||||
local_54 = 0x554d11;
|
||||
|
||||
iVar3 = _System__VarToInt_qqrrx14System_Variant(&stack0xffffffe4);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'Q':
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
if (param_4[-0x276] != '\0') {
|
||||
|
||||
iVar3 = 1;
|
||||
|
||||
local_20 = &stack0xfffffffc;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (iVar3 - 1U < 7) {
|
||||
|
||||
if (*local_8 == 'Q') {
|
||||
|
||||
local_2c = (char *)0x554d79;
|
||||
|
||||
_System__FillChar_qqrpvic(pcVar4,0x270,0);
|
||||
|
||||
local_2c = (char *)0x554d8c;
|
||||
|
||||
_Apodset_TApolloTable_GetDouble_qqr17System_AnsiString
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"LAMT1");
|
||||
|
||||
*(double *)(param_4 + -0x110) = (double)in_ST0;
|
||||
|
||||
local_2c = (char *)0x554da6;
|
||||
|
||||
_Apodset_TApolloTable_GetDouble_qqr17System_AnsiString
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"MAMT1");
|
||||
|
||||
*(double *)(param_4 + -0x108) = (double)in_ST1;
|
||||
|
||||
local_2c = (char *)0x554dc0;
|
||||
|
||||
_Apodset_TApolloTable_GetDouble_qqr17System_AnsiString
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"SAMT1");
|
||||
|
||||
*(double *)(param_4 + -0x100) = (double)in_ST2;
|
||||
|
||||
local_2c = (char *)0x554dda;
|
||||
|
||||
_Apodset_TApolloTable_GetDouble_qqr17System_AnsiString
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"TAMT1");
|
||||
|
||||
*(double *)(param_4 + -0x118) = (double)in_ST3;
|
||||
|
||||
if ((*(double *)PTR_DAT_005e6020 != 100.0) && (*(double *)PTR_DAT_005e6020 != 0.0)) {
|
||||
|
||||
if ((*(double *)PTR_DAT_005e6020 == *(double *)(PTR_DAT_005e6020 + 8)) &&
|
||||
|
||||
((*(double *)PTR_DAT_005e6020 == *(double *)(PTR_DAT_005e6020 + 0x10) &&
|
||||
|
||||
(*(double *)PTR_DAT_005e6020 == *(double *)(PTR_DAT_005e6020 + 0x18))))) {
|
||||
|
||||
*(double *)(param_4 + -0x110) =
|
||||
|
||||
(*(double *)(param_4 + -0x110) * *(double *)(PTR_DAT_005e6020 + 8)) / 100.0;
|
||||
|
||||
*(double *)(param_4 + -0x108) =
|
||||
|
||||
(*(double *)(param_4 + -0x108) * *(double *)(PTR_DAT_005e6020 + 0x10)) / 100.0;
|
||||
|
||||
*(double *)(param_4 + -0x100) =
|
||||
|
||||
(*(double *)(param_4 + -0x100) * *(double *)(PTR_DAT_005e6020 + 0x18)) / 100.0;
|
||||
|
||||
*(double *)(param_4 + -0x118) =
|
||||
|
||||
(*(double *)(param_4 + -0x118) * *(double *)PTR_DAT_005e6020) / 100.0;
|
||||
|
||||
local_2c = (char *)0x0;
|
||||
|
||||
local_30 = (char *)0x1;
|
||||
|
||||
local_34._0_2_ = 0;
|
||||
|
||||
local_34._2_2_ = 0;
|
||||
|
||||
iVar3 = 0xb;
|
||||
|
||||
do {
|
||||
|
||||
local_38 = *(char **)(param_4 + iVar3 * 4 + -0x118);
|
||||
|
||||
iVar3 = iVar3 + -1;
|
||||
|
||||
} while (-1 < iVar3);
|
||||
|
||||
local_40 = (char *)0x554f81;
|
||||
|
||||
OPTIMIZ();
|
||||
|
||||
puVar5 = *(undefined4 **)PTR_DAT_005e5d84;
|
||||
|
||||
pcVar6 = param_4 + -0x118;
|
||||
|
||||
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
|
||||
|
||||
*(undefined4 *)pcVar6 = *puVar5;
|
||||
|
||||
puVar5 = puVar5 + (uint)bVar7 * -2 + 1;
|
||||
|
||||
pcVar6 = pcVar6 + ((uint)bVar7 * -2 + 1) * 4;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
local_2c = (char *)0x0;
|
||||
|
||||
local_30 = (char *)0x0;
|
||||
|
||||
fVar8 = ((float10)*(double *)(param_4 + -0x110) *
|
||||
|
||||
(float10)*(double *)(PTR_DAT_005e6020 + 8)) / (float10)100.0;
|
||||
|
||||
local_3c = SUB104(fVar8,0);
|
||||
|
||||
local_38 = (char *)((unkuint10)fVar8 >> 0x20);
|
||||
|
||||
local_34._0_2_ = (undefined2)((unkuint10)fVar8 >> 0x40);
|
||||
|
||||
local_40 = (char *)0x554e71;
|
||||
|
||||
MROUNDUD();
|
||||
|
||||
*(double *)(param_4 + -0x110) = (double)in_ST4;
|
||||
|
||||
local_40 = (char *)0x0;
|
||||
|
||||
local_44 = (char *)0x0;
|
||||
|
||||
fVar8 = ((float10)*(double *)(param_4 + -0x108) *
|
||||
|
||||
(float10)*(double *)(PTR_DAT_005e6020 + 0x10)) / (float10)100.0;
|
||||
|
||||
puStack_50 = SUB104(fVar8,0);
|
||||
|
||||
iStack_4c = (int)((unkuint10)fVar8 >> 0x20);
|
||||
|
||||
uStack_48 = (undefined2)((unkuint10)fVar8 >> 0x40);
|
||||
|
||||
local_54 = 0x554e9c;
|
||||
|
||||
MROUNDUD();
|
||||
|
||||
*(double *)(param_4 + -0x108) = (double)in_ST5;
|
||||
|
||||
local_54 = 0;
|
||||
|
||||
uStack_58 = 0;
|
||||
|
||||
fVar8 = ((float10)*(double *)(param_4 + -0x100) *
|
||||
|
||||
(float10)*(double *)(PTR_DAT_005e6020 + 0x18)) / (float10)100.0;
|
||||
|
||||
local_64 = SUB108(fVar8,0);
|
||||
|
||||
uStack_5c = (undefined2)((unkuint10)fVar8 >> 0x40);
|
||||
|
||||
uStack_68 = 0x554ec7;
|
||||
|
||||
MROUNDUD();
|
||||
|
||||
*(double *)(param_4 + -0x100) = (double)in_ST6;
|
||||
|
||||
*(double *)(param_4 + -0x118) =
|
||||
|
||||
*(double *)(param_4 + -0x110) + *(double *)(param_4 + -0x108) +
|
||||
|
||||
*(double *)(param_4 + -0x100);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
local_2c = (char *)0x554fa7;
|
||||
|
||||
_Db_TDataSet_Edit_qqrv(*(undefined4 *)(param_4 + -0x27c));
|
||||
|
||||
local_2c = (char *)0x554fb5;
|
||||
|
||||
_System__VarFromReal_qqrv(&local_54);
|
||||
|
||||
local_2c = (char *)0x554fcb;
|
||||
|
||||
_Db_TDataSet_SetFieldValue_qqrx17System_AnsiStringrx14System_Variant
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"LAMT1",&local_54);
|
||||
|
||||
local_2c = (char *)0x554fd9;
|
||||
|
||||
_System__VarFromReal_qqrv(&local_64);
|
||||
|
||||
local_2c = (char *)0x554fef;
|
||||
|
||||
_Db_TDataSet_SetFieldValue_qqrx17System_AnsiStringrx14System_Variant
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"MAMT1",&local_64);
|
||||
|
||||
local_2c = (char *)0x554ffd;
|
||||
|
||||
_System__VarFromReal_qqrv(auStack_78 + 4);
|
||||
|
||||
local_2c = (char *)0x555013;
|
||||
|
||||
_Db_TDataSet_SetFieldValue_qqrx17System_AnsiStringrx14System_Variant
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"SAMT1",auStack_78 + 4);
|
||||
|
||||
local_2c = (char *)0x555021;
|
||||
|
||||
_System__VarFromReal_qqrv(local_84);
|
||||
|
||||
local_2c = (char *)0x555037;
|
||||
|
||||
_Db_TDataSet_SetFieldValue_qqrx17System_AnsiStringrx14System_Variant
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"TAMT1",local_84);
|
||||
|
||||
local_2c = (char *)0x555045;
|
||||
|
||||
_System__FillChar_qqrpvic(pcVar4,0x270,0);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
local_2c = *(char **)(param_4 + -0x280);
|
||||
|
||||
local_30 = local_8;
|
||||
|
||||
local_34._0_2_ = 0x505d;
|
||||
|
||||
local_34._2_2_ = 0x55;
|
||||
|
||||
cVar1 = MPOS();
|
||||
|
||||
if ((cVar1 == '\0') || (param_4[-0x281] != '\0')) {
|
||||
|
||||
*(int *)(param_4 + iVar3 * 4 + -0x2a8) = *(int *)(param_4 + iVar3 * 4 + -0x2a8) + 1;
|
||||
|
||||
fVar8 = (float10)*(int *)(param_4 + iVar3 * 4 + -0x2a8);
|
||||
|
||||
local_3c = SUB104(fVar8,0);
|
||||
|
||||
local_38 = (char *)((unkuint10)fVar8 >> 0x20);
|
||||
|
||||
local_34._0_2_ = (undefined2)((unkuint10)fVar8 >> 0x40);
|
||||
|
||||
local_40 = (char *)0x555102;
|
||||
|
||||
_Sysutils_FormatFloat_qqrx17System_AnsiStringg("00000",&local_9c);
|
||||
|
||||
local_40 = local_9c;
|
||||
|
||||
local_44 = (char *)0x55511d;
|
||||
|
||||
_System__LStrFromChar_qqrr17System_AnsiStringc
|
||||
|
||||
(&local_a0,CONCAT31(0x555b,(&UNK_00555b07)[iVar3]));
|
||||
|
||||
pcVar6 = local_40;
|
||||
|
||||
local_40 = (char *)0x55512c;
|
||||
|
||||
_System__LStrCat3_qqrv(&local_c,local_a0,pcVar6);
|
||||
|
||||
local_40 = (char *)0x55513a;
|
||||
|
||||
_Db_TDataSet_Edit_qqrv(*(undefined4 *)(param_4 + -0x27c));
|
||||
|
||||
local_40 = (char *)0x555148;
|
||||
|
||||
_System__VarFromLStr_qqrr14System_Variantx17System_AnsiString(local_b0,local_c);
|
||||
|
||||
local_40 = (char *)0x555161;
|
||||
|
||||
_Db_TDataSet_SetFieldValue_qqrx17System_AnsiStringrx14System_Variant
|
||||
|
||||
(*(undefined4 *)(param_4 + -0x27c),"BDCODE1",local_b0);
|
||||
|
||||
local_40 = (char *)0x55516f;
|
||||
|
||||
_System__FillChar_qqrpvic(pcVar4,0x270,0);
|
||||
|
||||
local_40 = (char *)0x55517b;
|
||||
|
||||
FUN_00447cd8(pcVar4,local_8,1);
|
||||
|
||||
local_40 = (char *)0x55518e;
|
||||
|
||||
_System__LStrToString_qqrv(local_1b0,local_c,0xff);
|
||||
|
||||
local_40 = (char *)0x55519e;
|
||||
|
||||
_System__PStrNCpy_qqrp28System__SmallString_iuc_255_t1uc(param_4 + -0x268,local_1b0,6);
|
||||
|
||||
local_40 = (char *)0x5551a8;
|
||||
|
||||
FUN_0042ec30(local_c,1);
|
||||
|
||||
switch(iVar3) {
|
||||
|
||||
case 1:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7bc) = *(undefined4 *)(param_4 + -0x2a4);
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7a0) = *(undefined4 *)(param_4 + -0x2a0);
|
||||
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7b8) = *(undefined4 *)(param_4 + -0x29c);
|
||||
|
||||
break;
|
||||
|
||||
case 4:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7a4) = *(undefined4 *)(param_4 + -0x298);
|
||||
|
||||
break;
|
||||
|
||||
case 5:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7b0) = *(undefined4 *)(param_4 + -0x294);
|
||||
|
||||
break;
|
||||
|
||||
case 6:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7ac) = *(undefined4 *)(param_4 + -0x290);
|
||||
|
||||
break;
|
||||
|
||||
case 7:
|
||||
|
||||
*(undefined4 *)(*(int *)PTR_DAT_005e6148 + 0x7b4) = *(undefined4 *)(param_4 + -0x28c);
|
||||
|
||||
}
|
||||
|
||||
local_40 = (char *)0x555297;
|
||||
|
||||
_Apodset_TApolloTable_AppendBlank_qqrv(*(undefined4 *)(*(int *)PTR_DAT_005e6090 + 8));
|
||||
|
||||
local_40 = (char *)0x5552a5;
|
||||
|
||||
_System__VarFromPStr_qqrr14System_Variantrx28System__SmallString_iuc_255_
|
||||
|
||||
(local_1c0,param_4 + -0x268);
|
||||
|
||||
local_40 = (char *)0x5552bf;
|
||||
|
||||
_Db_TDataSet_SetFieldValue_qqrx17System_AnsiStringrx14System_Variant
|
||||
|
||||
(*(undefined4 *)(*(int *)PTR_DAT_005e6090 + 8),&DAT_00555b7c,local_1c0);
|
||||
|
||||
local_40 = (char *)0x5552cd;
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+185
-46
@@ -1,49 +1,188 @@
|
||||
{
|
||||
"stage": "32_실행계약단계",
|
||||
"date": "2026-11-14",
|
||||
"method": "static bytes only (capstone 32bit · pefile RCDATA DFM) · no execution · no patch",
|
||||
"binaries_sha256": {
|
||||
"STmate.Cpm": "99d5c05675ba1399c51a71db8e26ebd5ff39fd78d02360147c7705deb399b5f5",
|
||||
"ST_CPM/ST_Boq.CPM": "180707d0423dd2dcb8403d89ba1dbaf2731c0db5c6bb332029479fd9d9923ab3",
|
||||
"ST_Func_C.CPM": "f2d4b2f6ebda2d57e47d343907071400cdb4b9f01fa5cc7756f34eb5f94e2ca6",
|
||||
"DP_Common.CPM": "5f55d301c6b2139816ff8832e46becb852c4f0a0c9b5da199371156b6aaf30e0"
|
||||
"stage": "32_실행계약단계",
|
||||
"date": "2026-11-14",
|
||||
"method": "static bytes only (capstone 32bit · pefile RCDATA DFM) · no execution · no patch",
|
||||
"binaries_sha256": {
|
||||
"STmate.Cpm": "99d5c05675ba1399c51a71db8e26ebd5ff39fd78d02360147c7705deb399b5f5",
|
||||
"ST_CPM/ST_Boq.CPM": "180707d0423dd2dcb8403d89ba1dbaf2731c0db5c6bb332029479fd9d9923ab3",
|
||||
"ST_Func_C.CPM": "f2d4b2f6ebda2d57e47d343907071400cdb4b9f01fa5cc7756f34eb5f94e2ca6",
|
||||
"DP_Common.CPM": "5f55d301c6b2139816ff8832e46becb852c4f0a0c9b5da199371156b6aaf30e0"
|
||||
},
|
||||
"rules": [
|
||||
{
|
||||
"id": "R1",
|
||||
"name": "MROUNDUD(value, digits, sel)",
|
||||
"module": "DP_Common",
|
||||
"addr": "0x454044-0x4546de",
|
||||
"confidence": "high",
|
||||
"rule": "stdcall: value Extended at +8, digits int at +0x14, sel byte at +0x18. |v| formatted with FormatFloat('0.0'+'#'*13) after adding noise eps (10^(dotpos-13) for dotpos 2..9, 1e-4 for 10..13, 1e-9 above; eps=0 when fewer than 11 significant digits). digits>=0 cuts decimals, digits<0 cuts integer digits (10^|d| unit). sel=0 -> truncation toward zero; sel=1 -> adds one unit when first dropped digit >=5 (Round(StrToFloat('0.'+digit+'1'))). Sign restored by IIF(v>0)."
|
||||
},
|
||||
"rules": [
|
||||
{"id": "R1", "name": "MROUNDUD(value, digits, sel)", "module": "DP_Common", "addr": "0x454044-0x4546de", "confidence": "high",
|
||||
"rule": "stdcall: value Extended at +8, digits int at +0x14, sel byte at +0x18. |v| formatted with FormatFloat('0.0'+'#'*13) after adding noise eps (10^(dotpos-13) for dotpos 2..9, 1e-4 for 10..13, 1e-9 above; eps=0 when fewer than 11 significant digits). digits>=0 cuts decimals, digits<0 cuts integer digits (10^|d| unit). sel=0 -> truncation toward zero; sel=1 -> adds one unit when first dropped digit >=5 (Round(StrToFloat('0.'+digit+'1'))). Sign restored by IIF(v>0)."},
|
||||
{"id": "R2", "name": "ADDBJVAL(value)", "module": "DP_Common", "addr": "0x4565f8", "confidence": "medium-high",
|
||||
"rule": "adds eps (same dotpos table, '0.##############') in sign direction unless eps > |v|; no '.' -> unchanged."},
|
||||
{"id": "R3", "name": "OPTIMIZ(rec{T,L,M,S,A,N}, priority, digits, outIndex, mode)", "module": "ST_Func_C", "addr": "0x48094c-0x480f05 (helpers 0x480864, 0x4808d4)", "confidence": "high",
|
||||
"rule": "component order from OPTNM chars (+0x7dd..) then A. mode 1 -> MROUNDUD sel1, mode 3 -> MROUNDUP, else MROUNDUD sel0. If priority or mode in {1,3} or sum(rounded)==raw T -> T=sum. Else Tr=MROUNDUD(T,d,0); f_i=|MROUNDUD(MFRAC(c_i*10^d),2,0)|; k=Round((Tr-sum)*10^d); loop while 0<k<=4: pick first-start max f (f<1 for later candidates, strict >, ties keep earlier), f+=1, k=(sign(res)==sign(c_i))?k-1:k+1; finally r_i += MTRUNC(±f_i)/10^d. Output to global array slot outIndex (T,L,M,S,A,N at +0..+0x28)."},
|
||||
{"id": "R4", "name": "중기 실행단가 wNe_AutoCost", "module": "ST_Boq TwM_Boq_ExecX", "addr": "0x4da7a8-0x4daafc", "confidence": "high",
|
||||
"rule": "only if cBx_Auto checked. X = Hour==0 ? 0 : MROUNDUD(DayCost/Hour,0,0). ratio = TAMT3==0 ? 0 : X/TAMT3. comps = L3/M3/S3*ratio -> OPTIMIZ(priority 0, digits=wCm_Jeol value 0..-5, idx1, mode0). If L+M+S != X: wCm_OPT 1 -> L=X-(M+S); 2 -> M=X-(L+S); 3 -> S=X-(L+M); 0 -> first char of OPTNM (+0x7dd): 'L'->L, 'M'->M, else S. 실행금액: ADDBJVAL(QTY1*X / *L / *M / *S) -> OPTIMIZ(priority=CHNNM +0x7c5, digits0, idx1, mode0)."},
|
||||
{"id": "R5", "name": "ExecX 열기·보조", "module": "ST_Boq", "addr": "0x4d9ae0 open, 0x4dab5c DayQtyExit, 0x4dab08 AMTExit, 0x4dac28 apply, 0x4dadd0 SameFirst, 0x4da7e6 target", "confidence": "high",
|
||||
"rule": "time-based if code[0]=='X' or (code[0] in B,W and UNIT1 upper in {'X','HR'}); Hour default 8 (time) / 1 (else) when kind changes. DayCost=TAMT1*Hour; DayQty=QTY1/Hour; QTY1=Hour*DayQty. TAMT1=L1+M1+S1. Apply writes QTY1 (if cBx_AddQty) and LAMT1,MAMT1,SAMT1,TAMT1 then Commit. SameFirst: Hour==0 -> auto off; Jeol=0; DayCost=TAMT3*Hour; L1..S1=L3..S3. Target find: DayCost=MROUNDUP(T_AMT1/DayQty,0)."},
|
||||
{"id": "R6", "name": "실행수량·실행단가 할증", "module": "ST_Boq TwBoq.Act_Rate_Execute -> 0x511fa8, dialog TwM_Rate 0x4d4270", "addr": "0x512a80, 0x511fa8-0x5128f5", "confidence": "high (단가 비-Q 갈래 세부 medium)",
|
||||
"rule": "Tag/10: 1 수량, 2 단가; Tag%10: 1 L, 2 M, 3 X, 4 other(SWBDAPQ). 수량: QTY1=MROUNDUD(QTY3*rate/100, Pnt2 digits 0..4, Pnt1==1). 단가 Q rows: LAMT1/NAMT1/MAMT1/SAMT1 = MROUNDUD(*3*rate/100,...), TAMT1=L+M+S. 단가 other rows: COSTN 1칸 단가 * rate. %-unit rows excluded for L/M and for SWP-letter W rows. Row amounts recomputed via 0x456504 (CHNNM)."},
|
||||
{"id": "R7", "name": "계약 변환 적용율", "module": "STmate TwM_Mk_Cont", "addr": "0x5534f0, 0x5569d8 (prior REA 27), 0x55610e", "confidence": "high",
|
||||
"rule": "CBoxCreateILwi checked: edPer_L only (M,S hidden), label '단가 적용율', lbMsg '0% -> 기존 조사가자료 코드 변경없이'. Unchecked: L,M,S separate, overall=MROUNDUD((L+M+S)/3,3,1), lbMsg '0% -> W코드 0化'. PNUM = (ILwi && overall==0) ? '조사가적용' : FormatFloat('0.00##', ILwi?overall:(L+M+S)/3)+'% 적용'."},
|
||||
{"id": "R8", "name": "계약 변환 코드 갈래", "module": "STmate", "addr": "0x554be0-0x555ae8 (jump table 0x554c5b/0x554c72, 0x5551b8)", "confidence": "high",
|
||||
"rule": "processed letters MLSWBDXQ (0x556790). gate ILwi && overall==0 -> skip all. Q: HalMLSW -> in-place unit scaling (no new code). L/M/S/W: HalMLSW off -> keep; on -> ILwi ? own letter : W. B/D/X: ILwi ? own letter : W. new code = letter + FormatFloat('00000', ++counter[letter]) with counters from settings +0x7a0..+0x7bc; Same2DIF off -> reuse by original code (substring search in concatenated seen list)."},
|
||||
{"id": "R9", "name": "계약 단가 계산", "module": "STmate", "addr": "0x5554f2-0x5556ed, Q 0x554de1-0x554f98, write 0x555705-0x55582d", "confidence": "high",
|
||||
"rule": "overall==100 -> unchanged; overall==0 -> no price write (AppendBlank zeros). all rates equal -> comps*r/100 and T*r/100 unrounded -> OPTIMIZ(priority B:CHBNM +0x7c6, D:CHGNM +0x7c4, Q:CHGNM, else 1; digits0; idx1; mode0). rates differ -> each MROUNDUD(c*r/100,0,0), T=sum. B/D/X new code: NAGCD=overall, UC=T, BCONT=T, IFORM copied, BDQTY copy (0x5544b0)."},
|
||||
{"id": "R10", "name": "적용제외 공정", "module": "STmate", "addr": "0x55409c, 0x553c08, 0x555f68-0x5560d6", "confidence": "high (ITM_TYP 의미 미확인)",
|
||||
"rule": "list query BDCODE1=\"T\" .and. BDCODE1>=\"T<n>\" (cBx_Lev T1..T9). columns ITNUM,NAME1,SIZE1,T_AMT1,BDCODE1, col5 exclude default true when ITM_TYP in {11,21,31,41,51,71,72}, col6 RecNo. OK collects RecNo of checked rows. conversion skips rows from a checked head until SORTCODE==its ENDCODE."},
|
||||
{"id": "R11", "name": "비과세자재대 옵션", "module": "STmate", "addr": "0x556274-0x55653f", "confidence": "high (키 이름) / medium (마지막 PRJ_MEMO 기록 뜻)",
|
||||
"rule": "if CBoxSetHal_NBUGAM checked and M rate >= 0: PRJ_MEMO.INI [1_KANJUB] 1_C_NBUGAM and 1_C_BUGA_M := MROUNDUD(v*M/100,0,0). BOQ rows unaffected."},
|
||||
{"id": "R12", "name": "설정 키", "module": "STmate", "addr": "0x42aeba-0x42af11", "confidence": "high",
|
||||
"rule": "+0x7c4 = START/CHGNM (ReadBool default true, 단가산출근거 계산방식), +0x7c6 = START/CHBNM (default = CHGNM, 일위대가표 계산방식), +0x7c5 = START/CHNNM (default true, 내역서 계산방식). UI ST_Sys cmBx_CHG/CHB/CHN items '비목별금액 먼저계산','총액 먼저 계산'."},
|
||||
{"id": "R13", "name": "실행예산 내역 생성 복사", "module": "STmate TwPrjList.MkBoq", "addr": "0x55c956-0x55ca4d", "confidence": "medium (갈래 조건 미확인)",
|
||||
"rule": "GetFieldValue MAMT1 -> SetFieldValue MAMT3 (likewise LAMT,SAMT,TAMT,M_AMT,L_AMT,S_AMT): 1칸 값을 3칸(최초)로 복사. '실행예산 레벨조정' 최소레벨 사용 중이면 레벨 한 단계 상향 · DES1 = '공종,작업명,구분' 머리 문자열."},
|
||||
{"id": "R14", "name": "SET_REP 0623/0624/0673/0674", "source": "C:/경영정보(주)/STmate 자료/설계자료/실습(맛보기)/SET_REP.DBF (data file)", "confidence": "high (데이터)",
|
||||
"rule": "0623 계약,실행내역서 / 0624 (종양식): HEADTITLE '계 약 내 역 서', FLDCNT 0. 0673 실행예산서Ⅰ / 0674 실행예산서Ⅱ: HEADTITLE '실 행 예 산 서', FLDCNT 5: 공종 25, 설계(계획) 20, 실행예산 25, 작업명 15, 구분 25."}
|
||||
],
|
||||
"open": [
|
||||
"MROUNDUP body (name-based ceil away from zero)",
|
||||
"ITM_TYP code meaning (all 7 STC head rows = 0)",
|
||||
"0673 vs 0674 row selection difference (ST_Prt string list only, no direct code xref)",
|
||||
"row amount routine 0x456504 in ST_Boq",
|
||||
"관급 구역 줄이 울진에서 미변환된 원인(변환 고리에 구역 조건 없음)",
|
||||
"예상적용율 찾기 0x556d68 내부(5000 나눔 반복) 세부"
|
||||
{
|
||||
"id": "R2",
|
||||
"name": "ADDBJVAL(value)",
|
||||
"module": "DP_Common",
|
||||
"addr": "0x4565f8",
|
||||
"confidence": "medium-high",
|
||||
"rule": "adds eps (same dotpos table, '0.##############') in sign direction unless eps > |v|; no '.' -> unchanged."
|
||||
},
|
||||
{
|
||||
"id": "R3",
|
||||
"name": "OPTIMIZ(rec{T,L,M,S,A,N}, priority, digits, outIndex, mode)",
|
||||
"module": "ST_Func_C",
|
||||
"addr": "0x48094c-0x480f05 (helpers 0x480864, 0x4808d4)",
|
||||
"confidence": "high",
|
||||
"rule": "component order from OPTNM chars (+0x7dd..) then A. mode 1 -> MROUNDUD sel1, mode 3 -> MROUNDUP, else MROUNDUD sel0. If priority or mode in {1,3} or sum(rounded)==raw T -> T=sum. Else Tr=MROUNDUD(T,d,0); f_i=|MROUNDUD(MFRAC(c_i*10^d),2,0)|; k=Round((Tr-sum)*10^d); loop while 0<k<=4: pick first-start max f (f<1 for later candidates, strict >, ties keep earlier), f+=1, k=(sign(res)==sign(c_i))?k-1:k+1; finally r_i += MTRUNC(±f_i)/10^d. Output to global array slot outIndex (T,L,M,S,A,N at +0..+0x28)."
|
||||
},
|
||||
{
|
||||
"id": "R4",
|
||||
"name": "중기 실행단가 wNe_AutoCost",
|
||||
"module": "ST_Boq TwM_Boq_ExecX",
|
||||
"addr": "0x4da7a8-0x4daafc",
|
||||
"confidence": "high",
|
||||
"rule": "only if cBx_Auto checked. X = Hour==0 ? 0 : MROUNDUD(DayCost/Hour,0,0). ratio = TAMT3==0 ? 0 : X/TAMT3. comps = L3/M3/S3*ratio -> OPTIMIZ(priority 0, digits=wCm_Jeol value 0..-5, idx1, mode0). If L+M+S != X: wCm_OPT 1 -> L=X-(M+S); 2 -> M=X-(L+S); 3 -> S=X-(L+M); 0 -> first char of OPTNM (+0x7dd): 'L'->L, 'M'->M, else S. 실행금액: ADDBJVAL(QTY1*X / *L / *M / *S) -> OPTIMIZ(priority=CHNNM +0x7c5, digits0, idx1, mode0)."
|
||||
},
|
||||
{
|
||||
"id": "R5",
|
||||
"name": "ExecX 열기·보조",
|
||||
"module": "ST_Boq",
|
||||
"addr": "0x4d9ae0 open, 0x4dab5c DayQtyExit, 0x4dab08 AMTExit, 0x4dac28 apply, 0x4dadd0 SameFirst, 0x4da7e6 target",
|
||||
"confidence": "high",
|
||||
"rule": "time-based if code[0]=='X' or (code[0] in B,W and UNIT1 upper in {'X','HR'}); Hour default 8 (time) / 1 (else) when kind changes. DayCost=TAMT1*Hour; DayQty=QTY1/Hour; QTY1=Hour*DayQty. TAMT1=L1+M1+S1. Apply writes QTY1 (if cBx_AddQty) and LAMT1,MAMT1,SAMT1,TAMT1 then Commit. SameFirst: Hour==0 -> auto off; Jeol=0; DayCost=TAMT3*Hour; L1..S1=L3..S3. Target find: DayCost=MROUNDUP(T_AMT1/DayQty,0)."
|
||||
},
|
||||
{
|
||||
"id": "R6",
|
||||
"name": "실행수량·실행단가 할증",
|
||||
"module": "ST_Boq TwBoq.Act_Rate_Execute -> 0x511fa8, dialog TwM_Rate 0x4d4270",
|
||||
"addr": "0x512a80, 0x511fa8-0x5128f5",
|
||||
"confidence": "high (단가 비-Q 갈래 세부 medium)",
|
||||
"rule": "Tag/10: 1 수량, 2 단가; Tag%10: 1 L, 2 M, 3 X, 4 other(SWBDAPQ). 수량: QTY1=MROUNDUD(QTY3*rate/100, Pnt2 digits 0..4, Pnt1==1). 단가 Q rows: LAMT1/NAMT1/MAMT1/SAMT1 = MROUNDUD(*3*rate/100,...), TAMT1=L+M+S. 단가 other rows: COSTN 1칸 단가 * rate. %-unit rows excluded for L/M and for SWP-letter W rows. Row amounts recomputed via 0x456504 (CHNNM)."
|
||||
},
|
||||
{
|
||||
"id": "R7",
|
||||
"name": "계약 변환 적용율",
|
||||
"module": "STmate TwM_Mk_Cont",
|
||||
"addr": "0x5534f0, 0x5569d8 (prior REA 27), 0x55610e",
|
||||
"confidence": "high",
|
||||
"rule": "CBoxCreateILwi checked: edPer_L only (M,S hidden), label '단가 적용율', lbMsg '0% -> 기존 조사가자료 코드 변경없이'. Unchecked: L,M,S separate, overall=MROUNDUD((L+M+S)/3,3,1), lbMsg '0% -> W코드 0化'. PNUM = (ILwi && overall==0) ? '조사가적용' : FormatFloat('0.00##', ILwi?overall:(L+M+S)/3)+'% 적용'."
|
||||
},
|
||||
{
|
||||
"id": "R8",
|
||||
"name": "계약 변환 코드 갈래",
|
||||
"module": "STmate",
|
||||
"addr": "0x554be0-0x555ae8 (jump table 0x554c5b/0x554c72, 0x5551b8)",
|
||||
"confidence": "high",
|
||||
"rule": "processed letters MLSWBDXQ (0x556790). gate ILwi && overall==0 -> skip all. Q: HalMLSW -> in-place unit scaling (no new code). L/M/S/W: HalMLSW off -> keep; on -> ILwi ? own letter : W. B/D/X: ILwi ? own letter : W. new code = letter + FormatFloat('00000', ++counter[letter]) with counters from settings +0x7a0..+0x7bc; Same2DIF off -> reuse by original code (substring search in concatenated seen list)."
|
||||
},
|
||||
{
|
||||
"id": "R9",
|
||||
"name": "계약 단가 계산",
|
||||
"module": "STmate",
|
||||
"addr": "0x5554f2-0x5556ed, Q 0x554de1-0x554f98, write 0x555705-0x55582d",
|
||||
"confidence": "high",
|
||||
"rule": "overall==100 -> unchanged; overall==0 -> no price write (AppendBlank zeros). all rates equal -> comps*r/100 and T*r/100 unrounded -> OPTIMIZ(priority B:CHBNM +0x7c6, D:CHGNM +0x7c4, Q:CHGNM, else 1; digits0; idx1; mode0). rates differ -> each MROUNDUD(c*r/100,0,0), T=sum. B/D/X new code: NAGCD=overall, UC=T, BCONT=T, IFORM copied, BDQTY copy (0x5544b0)."
|
||||
},
|
||||
{
|
||||
"id": "R10",
|
||||
"name": "적용제외 공정",
|
||||
"module": "STmate",
|
||||
"addr": "0x55409c, 0x553c08, 0x555f68-0x5560d6",
|
||||
"confidence": "high (ITM_TYP 의미 미확인)",
|
||||
"rule": "list query BDCODE1=\"T\" .and. BDCODE1>=\"T<n>\" (cBx_Lev T1..T9). columns ITNUM,NAME1,SIZE1,T_AMT1,BDCODE1, col5 exclude default true when ITM_TYP in {11,21,31,41,51,71,72}, col6 RecNo. OK collects RecNo of checked rows. conversion skips rows from a checked head until SORTCODE==its ENDCODE."
|
||||
},
|
||||
{
|
||||
"id": "R11",
|
||||
"name": "비과세자재대 옵션",
|
||||
"module": "STmate",
|
||||
"addr": "0x556274-0x55653f",
|
||||
"confidence": "high (키 이름) / medium (마지막 PRJ_MEMO 기록 뜻)",
|
||||
"rule": "if CBoxSetHal_NBUGAM checked and M rate >= 0: PRJ_MEMO.INI [1_KANJUB] 1_C_NBUGAM and 1_C_BUGA_M := MROUNDUD(v*M/100,0,0). BOQ rows unaffected."
|
||||
},
|
||||
{
|
||||
"id": "R12",
|
||||
"name": "설정 키",
|
||||
"module": "STmate",
|
||||
"addr": "0x42aeba-0x42af11",
|
||||
"confidence": "high",
|
||||
"rule": "+0x7c4 = START/CHGNM (ReadBool default true, 단가산출근거 계산방식), +0x7c6 = START/CHBNM (default = CHGNM, 일위대가표 계산방식), +0x7c5 = START/CHNNM (default true, 내역서 계산방식). UI ST_Sys cmBx_CHG/CHB/CHN items '비목별금액 먼저계산','총액 먼저 계산'."
|
||||
},
|
||||
{
|
||||
"id": "R13",
|
||||
"name": "실행예산 내역 생성 복사",
|
||||
"module": "STmate TwPrjList.MkBoq",
|
||||
"addr": "0x55c956-0x55ca4d",
|
||||
"confidence": "medium (갈래 조건 미확인)",
|
||||
"rule": "GetFieldValue MAMT1 -> SetFieldValue MAMT3 (likewise LAMT,SAMT,TAMT,M_AMT,L_AMT,S_AMT): 1칸 값을 3칸(최초)로 복사. '실행예산 레벨조정' 최소레벨 사용 중이면 레벨 한 단계 상향 · DES1 = '공종,작업명,구분' 머리 문자열."
|
||||
},
|
||||
{
|
||||
"id": "R14",
|
||||
"name": "SET_REP 0623/0624/0673/0674",
|
||||
"source": "C:/경영정보(주)/STmate 자료/설계자료/실습(맛보기)/SET_REP.DBF (data file)",
|
||||
"confidence": "high (데이터)",
|
||||
"rule": "0623 계약,실행내역서 / 0624 (종양식): HEADTITLE '계 약 내 역 서', FLDCNT 0. 0673 실행예산서Ⅰ / 0674 실행예산서Ⅱ: HEADTITLE '실 행 예 산 서', FLDCNT 5: 공종 25, 설계(계획) 20, 실행예산 25, 작업명 15, 구분 25."
|
||||
}
|
||||
],
|
||||
"open": [
|
||||
"RS field meaning",
|
||||
"print flag +0x1768 name, Prn_Nae vs Prn_NaeW flag",
|
||||
"예상적용율 고정분 (second 0x45f974 result)",
|
||||
"ITM_TYP x0 vs x1",
|
||||
"MkBoq copy branch conditions"
|
||||
],
|
||||
"rea_mcp_phase": {
|
||||
"tool": "rea-agents 6.7.0 + Ghidra 12.1.4 (procedure_pseudo_code, resolve_containing_procedure)",
|
||||
"cross_check": {
|
||||
"0x554be0": "Ghidra pseudo matches R8/R9 (no correction)"
|
||||
},
|
||||
"resolved": [
|
||||
{
|
||||
"id": "R15",
|
||||
"name": "MROUNDUP",
|
||||
"addr": "DP_Common 0x4547ac, Ceil 0x4297f4",
|
||||
"confidence": "high",
|
||||
"rule": "format |v|+eps with '0.0#########', cut at digits, Ceil(StrToFloat('0.'+next<=10 digits)) -> add 10^-d if any nonzero dropped digit; sign restored."
|
||||
},
|
||||
{
|
||||
"id": "R16",
|
||||
"name": "ITM_TYP names",
|
||||
"addr": "ST_U_Convert 0x587d9c (string[0..120]); ST_Boq 0x4fe15b lookup 1..119",
|
||||
"confidence": "high",
|
||||
"rule": "0 일반공종,10/11 안전관리비,20/21 품질관리비,30/31 미확정설계공종(PS),40 제요율적용제외공종,41 제비율적용제외공종,50/51 작업설 등,60/61 매입세,70 관급자재공종,71 관급자재대(도급자),72 관급자재대(관급자),111 비과세자재대,120 조달수수료"
|
||||
},
|
||||
{
|
||||
"id": "R17",
|
||||
"name": "울진 미변환 줄",
|
||||
"source": "울진 2025 STC BOQ11/BOQ12",
|
||||
"confidence": "high",
|
||||
"rule": "unchanged leaves = blocks of T3 '페기물처리' and T3 '관급자재대'(close C3 '합계(제외금액)'); both ITM_TYP 0 -> user-selected heads."
|
||||
},
|
||||
{
|
||||
"id": "R18",
|
||||
"name": "실행예산서 Ⅰ·Ⅱ",
|
||||
"addr": "ST_Prt 0x44fdf5 tag table 0x44ffc0 (20673/20674) -> ST_P_Nae Prn_Nae_Cont1/2 0x4c27f8 mode [0x57a4e0]; filter 0x4c245d; BeforePrint 0x4c3cd0",
|
||||
"confidence": "high",
|
||||
"rule": "mode1 all rows (+0x1768 on: !(MLSWBDXAP .and. QTY1=0)); mode2 SUBSTR(BDCODE1,1,1)$'TEC' .or. RS=1, C1/E1 closes suppressed. Form PM_Nae_Cont columns 공종 | 설계(계획) 수량·단위·금액(2칸) | 실행예산 작업명·구분·수량·단위·재/노/경/총액 단가·금액·비고(1칸)."
|
||||
},
|
||||
{
|
||||
"id": "R19",
|
||||
"name": "계약,실행내역서 0623/0624",
|
||||
"addr": "ST_Prt 0x4513e7 (20623 -> Prn_Nae|Prn_NaeW), 0x451477 (20624 -> Prn_Nae_P|Prn_NaeW_P)",
|
||||
"confidence": "high (module) / medium (flag)",
|
||||
"rule": "standard 내역서 printers applied to current (contract/exec) project."
|
||||
},
|
||||
{
|
||||
"id": "R20",
|
||||
"name": "실행예산 행 금액",
|
||||
"addr": "ST_Boq 0x456504 -> 0x433490 / 0x44019c -> 0x43dee8",
|
||||
"confidence": "medium-high",
|
||||
"rule": "row loaded into shared calc record; same row engine as design; CHNNM flag passed; per quantity slot loop (6)."
|
||||
},
|
||||
{
|
||||
"id": "R21",
|
||||
"name": "예상적용율 찾기",
|
||||
"addr": "STmate 0x556d68",
|
||||
"confidence": "medium",
|
||||
"rule": "aggregate (MCOST/LCOST/SCOST × rate, MROUNDUD 0) iteration against 총공사비 target via 0x45f974; start MROUNDUP(ratio,5); step ±1/(2N), N=min(5000,round(target/5000)); rate 5 decimals of fraction (0.001%)."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -241,3 +241,58 @@ def test_progress_project_keeps_contract_amounts():
|
||||
]
|
||||
assert all(r["tUnit"] == r["dUnit"] for r in rows if r["kind"] == "leaf")
|
||||
assert _call(("contract", "pnumText", [{"rateL": 87.745, "pclass": 6}]))[0] == "100.00% 적용"
|
||||
|
||||
|
||||
def test_itm_typ_names_and_default_exclusion():
|
||||
"""ITM_TYP 이름표(ST_U_Convert 0x587d9c) — 기본 체크 11·21·31·41·51·71·72 = 안전·품질·PS·제비율적용제외·작업설·관급자재대."""
|
||||
names, dflt = _call(
|
||||
("contract", "levelHeads", [TREE, 1]), ("contract", "levelHeads", [TREE, 3])
|
||||
)
|
||||
assert names[1]["itm"] == 21 and names[1]["itmName"] == "품질관리비"
|
||||
out = subprocess.check_output(
|
||||
[
|
||||
"node",
|
||||
"-e",
|
||||
"const K=require(process.argv[1]);process.stdout.write(JSON.stringify("
|
||||
"K.DEFAULT_EXCLUDE_ITM.map(c=>K.ITM_TYP_NAMES[c])))",
|
||||
str(ROOT / "tools/stmate-test/contract_calc.js"),
|
||||
],
|
||||
text=True,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert json.loads(out) == [
|
||||
"안전관리비",
|
||||
"품질관리비",
|
||||
"미확정설계공종(PS)",
|
||||
"제비율적용제외공종",
|
||||
"작업설 등",
|
||||
"관급자재대(도급자)",
|
||||
"관급자재대(관급자)",
|
||||
]
|
||||
|
||||
|
||||
def test_uljin_unconverted_rows_are_excluded_head_blocks(uljin):
|
||||
"""울진 미변환 공종 = 계표시 머리 블록 둘(T3「페기물처리」 · T3「관급자재대」 닫음 C3 제외금액) · ITM_TYP 0 = 사용자 선택."""
|
||||
b11, b12 = uljin["boq_tables"]["BOQ11.DBF"], uljin["boq_tables"]["BOQ12.DBF"]
|
||||
struct = re.compile(r"^(T\d|E\d|C\d|:)$")
|
||||
block = set()
|
||||
for name in ("페기물처리", "관급자재대"):
|
||||
head = next(i for i, r in enumerate(b11) if (r.get("NAME1") or "").strip() == name)
|
||||
end = next(
|
||||
i
|
||||
for i in range(head + 1, len(b11))
|
||||
if re.match(r"^[EC]\d$", (b11[i].get("BDCODE1") or "").strip())
|
||||
)
|
||||
assert b11[head]["BDCODE1"] == "T3" and float(b11[head]["ITM_TYP"] or 0) == 0
|
||||
block |= set(range(head + 1, end))
|
||||
assert (b11[end]["BDCODE1"] or "").strip() == "C3"
|
||||
leaf = lambda r: r.get("BDCODE1") and not struct.match(r["BDCODE1"].strip()) # noqa: E731
|
||||
l11 = [(i, r) for i, r in enumerate(b11) if leaf(r)]
|
||||
l12 = [r for r in b12 if leaf(r)]
|
||||
assert len(l11) == len(l12)
|
||||
kept = {
|
||||
i
|
||||
for (i, r), q in zip(l11, l12)
|
||||
if r["BDCODE1"].strip() == q["BDCODE1"].strip() and float(r.get("TAMT1") or 0)
|
||||
}
|
||||
assert kept == block
|
||||
|
||||
@@ -199,3 +199,49 @@ def test_report_columns_from_set_rep():
|
||||
["작업명", 15],
|
||||
["구분", 25],
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"v,d,exp",
|
||||
[
|
||||
(10.01, 0, 11),
|
||||
(-10.01, 0, -11),
|
||||
(10, 0, 10),
|
||||
(123401, -2, 123500),
|
||||
(123400, -2, 123400),
|
||||
(2.341, 2, 2.35),
|
||||
(0.4, 0, 1),
|
||||
],
|
||||
)
|
||||
def test_mroundup_ceil_of_dropped_digits(v, d, exp):
|
||||
"""MROUNDUP(0x4547ac, REA MCP 의사코드) — 버린 다음 숫자(10자리 안) 하나라도 0 아니면 한 단위 올림(0 반대쪽)."""
|
||||
assert _call(("exec", "mroundup", [v, d]))[0] == pytest.approx(exp)
|
||||
|
||||
|
||||
def _nd(kind, code, qty=0, level=None):
|
||||
nd = {"kind": kind, "code": code, "st": {"d": {"qty": qty}, "x": {"qty": qty}}}
|
||||
if level is not None:
|
||||
nd["level"] = level
|
||||
return nd
|
||||
|
||||
|
||||
def test_report_rows_mode_1_and_2():
|
||||
"""실행예산서 Ⅰ = 모든 줄(설정 켬 = 실행수량 0 공종 뺌) · Ⅱ = T·E·C 줄 + RS=1 · C1·E1 닫음 뺌(ST_P_Nae 0x4c245d · 0x4c3d38)."""
|
||||
nodes = [
|
||||
_nd("head", "T2", level=2),
|
||||
_nd("head", "T1", level=1),
|
||||
_nd("leaf", "M0001", 3),
|
||||
_nd("leaf", "L0002", 0),
|
||||
{**_nd("leaf", "B0003", 1), "rs": 1},
|
||||
_nd("close", "E1"),
|
||||
_nd("close", "C2"),
|
||||
{"kind": "blank", "st": {}},
|
||||
]
|
||||
one, one_skip, two = _call(
|
||||
("exec", "reportRows", [nodes, 1, {}]),
|
||||
("exec", "reportRows", [nodes, 1, {"skipZeroQty": True}]),
|
||||
("exec", "reportRows", [nodes, 2, {}]),
|
||||
)
|
||||
assert [n["code"] for n in one] == ["T2", "T1", "M0001", "L0002", "B0003", "E1", "C2"]
|
||||
assert "L0002" not in [n["code"] for n in one_skip] and len(one_skip) == 6
|
||||
assert [n["code"] for n in two] == ["T2", "T1", "B0003", "C2"]
|
||||
|
||||
+18
-18
@@ -29,9 +29,9 @@
|
||||
|
||||
## 진행률
|
||||
|
||||
- 합계: 전체 246 · 구현 205 · 부분 38 · 없음 3 → 진행률 91.1%((205 + 38×0.5) / 246) · 구현만 세면 83.3%
|
||||
- 합계: 전체 246 · 구현 211 · 부분 33 · 없음 2 → 진행률 92.5%((211 + 33×0.5) / 246) · 구현만 세면 85.8%
|
||||
|
||||
### G1 화면·메뉴 (구현 48 · 부분 5 · 없음 1) — 93.5%
|
||||
### G1 화면·메뉴 (구현 49 · 부분 4 · 없음 1) — 94.4%
|
||||
|
||||
- [x] F1-01 메인 메뉴·툴바·하단 금액 집계줄 — STmate.Cpm 메인 · 현재: 구현(원본 메뉴 구조·툴바 차례·단축키 12·체크 항목·최근 폴더(test_stmate_ui))
|
||||
- [x] F1-02 공사목록표 목록·선택·불러오기 — wPrjList · 현재: 구현(공사목록표 · 다른 내역서 열기(저장 직접비 1원 일치))
|
||||
@@ -50,7 +50,7 @@
|
||||
- [x] F1-15 공종 목록(코드·명칭·분류 정렬, 대공종 필터) — wKongJong · 현재: 구현(공종목록 코드 넣기 · 대공종 옵션)
|
||||
- [x] F1-16 주공종 집계표(레벨별 계표시 확인) — wMBoq · 현재: 구현(레벨 거르기·계표시·레벨 올리기/내리기·주공종 집계)
|
||||
- [x] F1-17 공종번호 자동입력(머리·끝 글자·번호형식·자리수) — wITNum · 현재: 구현(하위 전체공종 반영 · 실무 7건 규칙 번호 255/304 일치 · 나머지는 손 입력(test_itnum_tree_reproduces_every_rule_number))
|
||||
- [ ] F1-18 내역 할증율 적용(전체/비목별) — wBoqRate · 현재: 부분(REA 34 TwBoqRate — 보호(UC) 행 비목 무관 건너뜀 · B·D·L·M·S·W·X 밖 율 0 반영(test_hal_rate_rows) · 율 single 실수 정밀도 1원 차이 조건부 · 실물 표본 0)
|
||||
- [x] F1-18 내역 할증율 적용(전체/비목별) — wBoqRate · 현재: 구현(REA 34 §7·§17.4 — 보호 행 건너뜀 · B·D·L·M·S·W·X 밖 율 0 · 계수 4바이트 실수(ST_Boq 0x4e9b20 fstp dword) → 70%·115% 1원 적음(test_stmate_jdl_rea · test_hal_rate_rows) · 실물 표본 0)
|
||||
- [x] F1-19 비목별 일괄 보정(절사/반올림 × 소수 0~4 · 범위) — wM_Rate · 현재: 구현(비목별 단가 끝전 · 줄 고정 단가(server fixedUnit)로 다시 불러도 유지)
|
||||
- [x] F1-20 일위대가표 풀기 — wExpnd · 현재: 구현(일위대가 풀기 = 구성표 × 내역 수량)
|
||||
- [x] F1-21 풀어넣기 비목별 끝전·가산비목 지정 — wM_Expnd · wM_Expnd10 · 현재: 구현(풀어넣기 비목별 끝전·할증·손료 비율 줄 · 손료 줄 금액 7건 대조)
|
||||
@@ -88,7 +88,7 @@
|
||||
- [x] F1-53 인쇄영역 선택(당초/변경/분할·레벨·변경 1~8차) — wM_Sel_Prn · 현재: 구현(인쇄영역 당초/변경/분할·레벨·차수 반영)
|
||||
- [ ] F1-54 특수문자·그림코드·메모 입력 — mMinMsg_ · wInDlgImg · wInDlgMemo · 현재: 부분(특수문자·메모·그림코드 넣기 · 그림 저장 자리 근거 없음)
|
||||
|
||||
### G2 계산 엔진 (구현 57 · 부분 4 · 없음 0) — 96.7%
|
||||
### G2 계산 엔진 (구현 58 · 부분 3 · 없음 0) — 97.5%
|
||||
|
||||
- [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 글자 짝 미확인)
|
||||
@@ -98,7 +98,7 @@
|
||||
- [x] F2-06 자재 후보 최저가 자동채택 — 17번 §5.5 · 현재: 구현(최저가 채택 · 실무 7건 변동 0(test_material_candidate_minimum_matches_stored))
|
||||
- [x] F2-07 수동 고정·보호표시 우선 — 22번 §3.1 · 13번 T10 · 현재: 구현(보호표시(UC=T) 우선)
|
||||
- [x] F2-08 중기 시간당 사용료 조립(손료·운전원·연료·잡품 성분 절사) — 17번 §3 · 현재: 구현(BDQTY 구성 · 성분 절사 · 7건 대조)
|
||||
- [ ] F2-09 손료 주간·야간·2교대·3교대(E0~E3) — 30번 §4 · 현재: 부분(손료 E1~E3 입력 칸 · REA 34 계산 본체에 E0~E3 갈래·계수 없음 — XML 요소 이름뿐)
|
||||
- [x] F2-09 손료 주간·야간·2교대·3교대(E0~E3) — 30번 §4 · 현재: 구현(REA 34 §17.7 — 원본 계산에 E1~E3 계수 곱 없음(조달청 XML 열거값뿐) · 계수 칸 걷음 · 구분값만 행에 남김)
|
||||
- [x] F2-10 단가산출 D코드 전개 계산 — 18번 §2.2 · 23번 · 현재: 구현(smt_eval.js · 원설계 5건 282개 1원 · 참조 단가는 저장값)
|
||||
- [x] F2-11 운반비 경비 귀속 — 23번 §4 · 26번 §1 · 현재: 구현(COSTN SBMOK=S · (-=)+「운반비 계」 T% · 저장 금액 판정 걷음)
|
||||
- [x] F2-12 일위대가 B코드 구성 조립·성분 절사 — 17번 §2·§5 · 현재: 구현(BDQTY 구성 · 행 소수1 버림 · CHBNM 총액우선 = 행 합계액 기준 · 7건 대조)
|
||||
@@ -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 행자부(I_SET_BASE 1) = RATE_M 간접노무비·일반관리비 23행·이윤 24행 조회 판독 · 규모 문턱 조건부 · 조회 미연결)
|
||||
- [ ] F2-24 공사종류·적용기준(행자부 RateM 포함)·공사기간 축 — 12번 §10.1 · 현재: 부분(공사종류·기간 축 요율 조회 7건 재현 · REA 34 §5.2·§17.5 행자부 = RATE_M 조회 · 문턱 직접공사비 50억·300억 확인 · 콤보 정수값 짝 미확인 · 조회 미연결)
|
||||
- [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))
|
||||
@@ -152,7 +152,7 @@
|
||||
- [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) · 내역 계산 연결 없음)
|
||||
|
||||
### G3 수량산출·식언어 (구현 25 · 부분 4 · 없음 0) — 93.1%
|
||||
### G3 수량산출·식언어 (구현 26 · 부분 3 · 없음 0) — 94.8%
|
||||
|
||||
- [x] F3-01 COSTN.SMT 메모 블록 읽기(IFORM 위치) — 21번 §1 · 23번 · 현재: 구현(smt_parser 150)
|
||||
- [x] F3-02 헤더 변수 정의(;; 줄)·변수 대입 — 23번 · 현재: 구현(smt_engine 112)
|
||||
@@ -166,7 +166,7 @@
|
||||
- [x] F3-10 조건 함수 IF·IIF·IFI·IFO — 24번 §2.3 · 25번 §2.2 · 현재: 구현(smt_eval 우선순위·함수·IIF/IF(test_functions_and_left_to_right))
|
||||
- [x] F3-11 금액변수·소계변수(대상·저장·%) 선언 — 28번 §1 · 현재: 구현(금액·누계 변수 · 계산후 제외(test_sonryo_amount_and_total_variables))
|
||||
- [x] F3-12 계산후 제외처리·항목집계 제외 코드 — 28번 §1·§4 · 현재: 구현(금액·누계 변수 · 계산후 제외(test_sonryo_amount_and_total_variables))
|
||||
- [ ] F3-13 강제금액(직접 지정 금액) — 28번 §4 · 현재: 부분(REA 34 강제금액 = 조달청 JDL→ST8 변환의 숫자 금액 참조 → W 견적코드(ST_U_Convert 0x455013) · 화면 입력 꼴 미확인)
|
||||
- [x] F3-13 강제금액(직접 지정 금액) — 28번 §4 · 현재: 구현(REA 34 §17.8 — STmate 산출근거에 강제금액 문법 없음 · JDL 가져오기의 숫자 금액 참조 → W 견적코드 변환 전용 · 사용자 기능은 강제수량뿐)
|
||||
- [x] F3-14 수량기호 Q·A·T·N — wM_Edit_San · 현재: 구현(Q·A·T·N 줄 · 결과적용 비목 4택·0원 비목(test_code_insert_lines_zero_skip_and_result_strip))
|
||||
- [x] F3-15 식 문법 검사(줄 단위 오류 메시지) — 28번 §4 · 현재: 구현(줄 단위 문법 오류 · 실무 산근 오류 0(test_section_markers_exclusion_and_grammar_errors))
|
||||
- [x] F3-16 문법 강조·문법설명·함수/연산 입력 단추 — 26번 §3 · 현재: 구현(함수 단추·강조 낱말 = 원본 화면 정의(test_editor_function_list_and_highlight_follow_dfm))
|
||||
@@ -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 · 부분 2 · 없음 2) — 90.0%
|
||||
### G4 파일 입출력 (구현 26 · 부분 3 · 없음 1) — 91.7%
|
||||
|
||||
- [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,13 +208,13 @@
|
||||
- [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 JDL = 조달청 호환 TEXT 묶음·탭 구분·JDLCheck 검사 항목 판독 · 내보내기 미구현 · app.js 569 '|' 형식 근거 없음)
|
||||
- [ ] F4-23 JDL 내보내기·검사 — frm_JDLAnno · JDLCHK.*.dll · 현재: 부분(REA 34 §17.9 — jdl_format.py: 단가 목록 8종 고정폭 자리·열 이름·열 개수·코드 글자 검사(test_stmate_jdl_rea) · 세부 3종 열 이름 조건부 · 묶음 내보내기 없음)
|
||||
- [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-30 BDQTY.DBF 구성표 복호 읽기 — STC_난독화_상태 · 현재: 구현(bdqty.py 자리별 회전·더하기 표 283자리 · 사용자 승인 · 글자 칸 제외)
|
||||
- [ ] F4-26 자재 기준자료 XLS 입출력 — wM_JajeXLS · 현재: 부분(자재 기준자료 엑셀 왕복 · 원본 화면·방향 미확인)
|
||||
- [x] F4-27 기준 BOQ·코드 변경 엑셀 왕복 — 24번 §3 · ST_U_ChgCode · 현재: 구현(stc_codechg 내역 8표 엑셀 왕복 · 코드 변경 되돌리면 7건 원래 바이트)
|
||||
- [ ] F4-28 구버전 → Win8 자료 변환 — ST_U_Convert ST_ConvToWin8 · 현재: 없음(REA 34 ST_ConvToWin8 갈래(DOS 110~ · 7.x 120~)·차례·BOQ 필드 바꿈 판독 · 미구현)
|
||||
- [ ] F4-28 구버전 → Win8 자료 변환 — ST_U_Convert ST_ConvToWin8 · 현재: 없음(REA 34 §13·§17.10 ST_ConvToWin8 갈래·차례·BOQ 필드 바꿈 판독 · 구버전 자료 표본 없음 · 미구현)
|
||||
- [x] F4-29 자동백업·자료 복원 — wM_D_Restore · wM_ST_Restore · 현재: 구현(api_file 자동 백업·복원)
|
||||
|
||||
### G5 보고서·내보내기 (구현 22 · 부분 14 · 없음 0) — 80.6%
|
||||
@@ -256,7 +256,7 @@
|
||||
- [x] F5-35 금액 한글 표기(AMTTOHAN) — 24번 §2.4 · 현재: 구현(금액 한글 표기 · 원본 한글 금액 11건 전부 일치)
|
||||
- [x] F5-36 SET_REP 데이터 기반 열·폭·제목 — 20번 §3 · 현재: 구현(SET_REP 서식 제목·시트 이름 적용 · 보고서 시험 포함)
|
||||
|
||||
### G6 설계변경·계약·실행·기성 (구현 27 · 부분 9 · 없음 0) — 87.5%
|
||||
### G6 설계변경·계약·실행·기성 (구현 30 · 부분 6 · 없음 0) — 91.7%
|
||||
|
||||
- [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원 재현)
|
||||
@@ -268,12 +268,12 @@
|
||||
- [x] F6-08 간접비 변경 모드: 당초액 유지(건강·장기요양·연금·퇴직공제) — 19번 §6 · 35번 §4 · 현재: 구현(D_ 표시 항목 = 저장 금액 고정 · 변경 2건 대조)
|
||||
- [x] F6-09 간접비 변경 방법 A(비율)·방법 B(증감×율) — 08번 §2 · 현재: 구현(scr_stage 재계산·당초 유지·방법A·방법B 선택 · 안전관리비 방법A 실물 대조)
|
||||
- [x] F6-10 보험료 변경 계산 3모드 — wM_KanJub cBx_CH_BO · 현재: 구현(REA 34 문 PCLASS 7·계열>1 · 1·2 식 · 장기요양·퇴직공제 갈래 · 기본값 0x47b633 · 차수 화면 선택(test_series_chain_uses_previous_series · test_gate_closed_outside_pclass7))
|
||||
- [x] F6-11 2차·3차 변경 계산 — wM_KanJub cBx_Chasu · 현재: 구현(REA 34 차수 콤보 PCLASS 갈래 · 직전 계열 되셈 사슬 · 당초액 유지 = 직전 계열(test_stmate_stage_change_rea) · 2차수 2건 실물 대조 · 3·4 실물 표본 없음)
|
||||
- [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 0645 = 「설계변경내역서(변경율)」 제목만 · 율 식 미확인)
|
||||
- [ ] F6-14 변경내역서(변경율)(0645) — CHANGE_AMT · 현재: 부분(변경율 내역서 · REA 34 §17.6 0645 = 「설계변경내역서(변경율)」 머리 「증 감」 · 율 식 미확인)
|
||||
- [x] F6-15 설계변경증감대비표(0648)·금액대비표 — CHANGE_AMT · 현재: 구현(증감대비표·금액대비표 · 영덕 엑셀 행 차례·금액 일치 · 인쇄·엑셀)
|
||||
- [ ] F6-16 변경총괄·굴착·시도 변경내역서(0661~0666) — CHANGE_* · 현재: 부분(변경총괄 = 영덕 엑셀 총괄내역서 일치 · REA 34 굴착 계열 짝(시비 1·구비 2 / 변경 3·4) = change_calc.excavTable · 양식 차례 조건부)
|
||||
- [ ] F6-16 변경총괄·굴착·시도 변경내역서(0661~0666) — CHANGE_* · 현재: 부분(변경총괄 = 영덕 엑셀 총괄내역서 일치 · REA 34 §17.6 0651~0667 구.시도/시도/구도 = 시비·구비·합 · 굴착 계열 짝 = change_calc.excavTable · 칸 차례 조건부)
|
||||
- [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코드 · 울진 대조)
|
||||
@@ -282,10 +282,10 @@
|
||||
- [x] F6-22 설계 → 계약자료 변환등록(당초/변경·레벨) — wM_Conv_Mode · 현재: 구현(소광 원설계 → 변환등록·저장 = 실제 울진 계약 STC 일치(test_stmate_stage_register))
|
||||
- [x] F6-23 낙찰율 열(NAGCD)·계약단가 저장 — 26번 §4 · 현재: 구현(새 코드 낙찰율·단가·산근 글·구성표 저장 = 울진 계약 STC 일치(test_stmate_stage_register))
|
||||
- [x] F6-24 계약 원가계산(계약 제잡비) — 27번 · 현재: 구현(계약 원가계산 · 울진 총공사비 333,315,000원 일치)
|
||||
- [ ] F6-25 계약·실행내역서(0623·0624) — PM_Nae_Cont · 현재: 부분(계약·실행내역서 화면 · 실물 표본 없음)
|
||||
- [ ] F6-26 실행예산 작업(실행단가·실행수량) — wBoq 실행예산작업 · 현재: 부분(REA 32 0x511fa8 실행단가·수량 할증(소수 0~4 절사/반올림 · 머리글자 갈래 율) · 행 금액 0x456504 미해독)
|
||||
- [x] F6-25 계약·실행내역서(0623·0624) — PM_Nae_Cont · 현재: 구현(REA MCP 32 §8 계약·실행내역서 0623·0624 = 설계 내역서 인쇄 모듈을 지금 공사에 그대로 · 기본 내역서 열(0623 두 모듈 고르는 기준 미확인))
|
||||
- [x] F6-26 실행예산 작업(실행단가·실행수량) — wBoq 실행예산작업 · 현재: 구현(REA 32 할증 0x511fa8 + 행 금액 0x456504 = 설계와 같은 공용 행 계산 엔진(test_stmate_stage_exec_rea))
|
||||
- [x] F6-27 중기 실행단가 계산(절사 6택·차액 보정 순서) — wM_Boq_ExecX · 현재: 구현(REA 32 0x4da7a8 합계 = 사용료÷시간 1원 절사 · 최초단가 비례 · 끝전 OPTIMIZ · 차액 = OPTNM 첫 성분(test_stmate_stage_exec_rea))
|
||||
- [ ] F6-28 실행예산서 Ⅰ·Ⅱ(0673·0674) — SET_REP · 현재: 부분(실행예산서 화면 · 표본 없음)
|
||||
- [x] F6-28 실행예산서 Ⅰ·Ⅱ(0673·0674) — SET_REP · 현재: 구현(REA MCP 32 §8 실행예산서 Ⅰ = 모든 줄(실행수량 0 제외 설정) · Ⅱ = 계표시·RS=1 줄 · 열 구성(test_stmate_stage_exec_rea))
|
||||
- [x] F6-29 기성 회차 전회·금회·누계·비율 — wM_KanJub_K rGrd_Jab · 현재: 구현(REA 33 칸 1 계약·2 누계·3 전회·4 금회 · 회차 이월(전회←누계·금회 0) · 누계 금액 따로 셈(test_stmate_stage_progress_rea))
|
||||
- [x] F6-30 공종별 기성수량·잔량 입력 — 27번 §3.2 · 현재: 구현(REA 33 0x4f4bbd 전회+금회 > 계약이면 금회 = 계약−전회 · 누계 = 전회+금회)
|
||||
- [x] F6-31 기성 제잡비(금회직접×계약제잡비율) — 27번 §3.1 · 현재: 구현(REA 33 0x4cdec0 금회 = 버림(계약잡비율 × 금회 직접비) · 마지막 회차 = 도급 − 전회)
|
||||
|
||||
@@ -13,10 +13,12 @@
|
||||
* · 세 율 같음 = 성분·총액 × 율/100 → OPTIMIZ(우선 플래그: B = CHBNM · D·Q = CHGNM · 그 밖 비목별, 0자리)
|
||||
* · 세 율 다름 = 비목별 MROUNDUD(단가 × 율/100, 0, 0) · 계 = 합
|
||||
* · 적용제외 = 고른 계표시 머리(T 레벨 ≥ 선택)부터 그 ENDCODE 까지(0x555f68) · 목록 기본 체크 = ITM_TYP 11·21·31·41·51·71·72
|
||||
* (안전관리비·품질관리비·PS·제비율적용제외·작업설·관급자재대 도급자/관급자 — ITM_TYP 이름표 ST_U_Convert 0x587d9c)
|
||||
* · 울진 관급 줄 = T3「관급자재대」(닫음 C3 제외금액) 머리를 고른 결과 — 그 머리 ITM_TYP 0(기본 체크 아님)
|
||||
* · 비과세자재대 옵션 = 원가계산 C_NBUGAM·C_BUGA_M × 재료비율/100 1원 절사(0x556274) — 내역 줄과 무관
|
||||
* · PNUM = 켬·율 0 → '조사가적용' · 그 밖 FormatFloat('0.00##', 대표율) + '% 적용'(0x55610e)
|
||||
* 실물(울진 2025 STC): 계약 단가·금액 1원 · 직접비 · 원가계산 · PNUM '87.745% 적용'
|
||||
* 앱 확장(원본 근거 없음 · 울진 관찰): 관급 구역 줄 제외(excludeGov) · 공종 단위 제외(excludeLeaves) · 단가 절사 자리(digits)
|
||||
* 앱 확장(원본 근거 없음): 관급 구역 줄 제외(excludeGov — 원본은 머리 선택으로만) · 공종 단위 제외(excludeLeaves) · 단가 절사 자리(digits)
|
||||
* 정답 대조: resources/tester/test_stmate_stage_contract.py · test_stmate_stage_contract_rea.py
|
||||
*/
|
||||
const StmateContract = (() => {
|
||||
@@ -59,6 +61,27 @@ const StmateContract = (() => {
|
||||
};
|
||||
// 적용제외 목록 기본 체크 ITM_TYP(0x55427b 비트표 0x55448c)
|
||||
const DEFAULT_EXCLUDE_ITM = [11, 21, 31, 41, 51, 71, 72];
|
||||
// ITM_TYP 공종구분 이름 — ST_U_Convert 상수 배열 0x587d9c(0~120) · 조달청 호환 공종구분과 같은 글
|
||||
const ITM_TYP_NAMES = {
|
||||
0: "일반공종",
|
||||
10: "안전관리비",
|
||||
11: "안전관리비",
|
||||
20: "품질관리비",
|
||||
21: "품질관리비",
|
||||
30: "미확정설계공종(PS)",
|
||||
31: "미확정설계공종(PS)",
|
||||
40: "제요율적용제외공종",
|
||||
41: "제비율적용제외공종",
|
||||
50: "작업설 등",
|
||||
51: "작업설 등",
|
||||
60: "매입세",
|
||||
61: "매입세",
|
||||
70: "관급자재공종",
|
||||
71: "관급자재대(도급자)",
|
||||
72: "관급자재대(관급자)",
|
||||
111: "비과세자재대",
|
||||
120: "조달수수료",
|
||||
};
|
||||
const TARGET = "MLSWBDXQ";
|
||||
|
||||
// 실제 쓰는 율 — 켬 = 노무비 칸 하나 · 끔 = 셋 따로(대표율 = 평균 소수 셋째 사사오입)
|
||||
@@ -102,13 +125,18 @@ const StmateContract = (() => {
|
||||
function levelHeads(tree, level = 1, itmOf = null) {
|
||||
return tree.nodes
|
||||
.filter((nd) => nd.kind === "head" && !nd.zone && nd.level >= Math.max(1, n0(level)))
|
||||
.map((nd) => ({
|
||||
recno: nd.recno,
|
||||
itnum: nd.itnum,
|
||||
name: nd.name,
|
||||
level: nd.level,
|
||||
defaultExcluded: DEFAULT_EXCLUDE_ITM.includes(n0(itmOf ? itmOf(nd) : nd.itmTyp)),
|
||||
}));
|
||||
.map((nd) => {
|
||||
const itm = n0(itmOf ? itmOf(nd) : nd.itmTyp);
|
||||
return {
|
||||
recno: nd.recno,
|
||||
itnum: nd.itnum,
|
||||
name: nd.name,
|
||||
level: nd.level,
|
||||
itm,
|
||||
itmName: ITM_TYP_NAMES[itm] || "",
|
||||
defaultExcluded: DEFAULT_EXCLUDE_ITM.includes(itm),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
// 적용제외 판정 — 고른 머리 아래 전부(SORTCODE~ENDCODE) · (앱) 고른 공종 · (앱) 관급 구역
|
||||
@@ -305,7 +333,8 @@ const StmateContract = (() => {
|
||||
return calcKanjub({ kanjubConfig: cfg }, conv.totals, null, cfg);
|
||||
}
|
||||
|
||||
// 예상적용율 찾기 — 노·재·경 같은 율 · 0.001% 단위 · 목표 이하 최대
|
||||
// 예상적용율 찾기 — 노·재·경 같은 율 · 0.001% 단위 · 목표 이하 최대(앱: 행 단위 변환 이분 탐색)
|
||||
// 원본 Act_Find_NagExecute 0x556d68 = 비목 합(MCOST·LCOST·SCOST) × 율 근사 되풀이 · 총공사비 목표 · 율 소수 5자리(REA 32 §8.2)
|
||||
// what = "direct"(직접공사비) · "grand"(총공사비, cfg 필요)
|
||||
function findRate(tree, opts, target, stage = 1, what = "direct", cfg = null) {
|
||||
const value = (k) => {
|
||||
@@ -425,6 +454,7 @@ const StmateContract = (() => {
|
||||
return {
|
||||
CONTRACT_CARRY,
|
||||
DEFAULT_EXCLUDE_ITM,
|
||||
ITM_TYP_NAMES,
|
||||
effRates,
|
||||
isProgressProject,
|
||||
pnumText,
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
* · 실행단가·실행수량 할증 = ST_Boq TwBoq.Act_Rate_Execute 0x512a80 → 0x511fa8
|
||||
* 실행수량 = MROUNDUD(최초수량 × 율/100, 자릿수 0~4, 절사/반올림) · 실행단가 = MROUNDUD(최초단가 × 율/100, …)
|
||||
* · 율은 코드 머리글자 갈래(L 노무비 · M 재료비 · X 중장비 · 그 밖 W)마다 하나 · 단가 할증은 단위 % 줄 제외
|
||||
* · 행 금액 = ST_Boq 0x456504 가 행을 계산 묶음에 싣고 공용 행 계산(0x433490 Q·A 줄 · 0x44019c → 0x43dee8)
|
||||
* 을 수량칸마다 부름 — 설계 내역과 같은 엔진(CHNNM 전달) · 앱은 OPTIMIZ(CHNNM, 0자리) 대입
|
||||
* · 실행예산서 Ⅰ·Ⅱ = ST_P_Nae Prn_Nae_Cont1·2(0x4c27f8 · 모드 1·2 · 같은 PM_Nae_Cont 양식)
|
||||
* Ⅰ = 모든 줄(출력 설정 켬이면 실행수량 0 공종 뺌) · Ⅱ = 계표시 줄(T·E·C) + RS=1 줄 · 소계 닫음(C1·E1) 안 찍음
|
||||
* 앱 확장(원본 없음): 비목별 율(rateM·rateL·rateS) · 원 단위 절사(jeol) — 옛 화면·시험 호환
|
||||
* 시험: resources/tester/test_stmate_stage_exec_rea.py (원본 규칙 손계산 대조)
|
||||
*/
|
||||
@@ -88,10 +92,38 @@ const StmateExec = (() => {
|
||||
return v > 0 ? r : -r;
|
||||
}
|
||||
|
||||
// MROUNDUP(v, d) — 올림(0 반대쪽) · 이름·호출 자리만 확인(본문 미해독) → 중간 확신
|
||||
// MROUNDUP(v, d) — DP_Common 0x4547ac (REA MCP Ghidra 의사코드로 확인)
|
||||
// FormatFloat('0.0#########', |v| + 미소값) → d 자리에서 자름 → 버린 다음 숫자들(최대 10자리)을
|
||||
// '0.' 뒤에 붙여 Ceil(0x4297f4 = Trunc + (Frac > 0)) → 하나라도 0 이 아니면 한 단위 올림(0 반대쪽)
|
||||
function mroundup(v, d = 0) {
|
||||
const t = mroundud(v, d, 0);
|
||||
return t === n0(v) ? t : t + Math.sign(n0(v)) * Math.pow(10, -Math.trunc(n0(d)));
|
||||
v = n0(v);
|
||||
d = Math.trunc(n0(d));
|
||||
if (v === 0) return 0;
|
||||
const a = Math.abs(v);
|
||||
const s0 = fmtHash(a, 10);
|
||||
let pos = s0.indexOf(".") + 1;
|
||||
if (pos > 0 && s0.length - pos < 11) {
|
||||
const first = s0.search(/[1-9]/) + 1;
|
||||
if (first > 0 && s0.length - first < 11) pos = 0;
|
||||
}
|
||||
if (pos === 0 && d >= 0 && !s0.includes(".")) return v;
|
||||
const s = fmtHash(a + (pos === 0 ? 0 : noiseEps(pos)), 10);
|
||||
const [ip, fp = ""] = s.split(".");
|
||||
let body, rest, e;
|
||||
if (d >= 0) {
|
||||
body = ip + (d ? "." + fp.slice(0, d).padEnd(d, "0") : "");
|
||||
rest = fp.slice(d, d + 10);
|
||||
e = -d;
|
||||
} else {
|
||||
const D = -d;
|
||||
if (ip.length > D)
|
||||
((body = ip.slice(0, ip.length - D) + "0".repeat(D)), (rest = ip.slice(-D) + fp));
|
||||
else ((body = "0"), (rest = ip + fp));
|
||||
e = D;
|
||||
}
|
||||
const sum = Number(body) + (/[1-9]/.test(rest) ? Math.pow(10, e) : 0);
|
||||
const r = d > 0 ? Number(sum.toFixed(Math.min(d, 20))) : sum;
|
||||
return v > 0 ? r : -r;
|
||||
}
|
||||
|
||||
// ADDBJVAL(v) — DP_Common 0x4565f8 · '.' 자리 기준 미소값을 부호 방향으로 더함
|
||||
@@ -349,8 +381,107 @@ const StmateExec = (() => {
|
||||
["구분", 25],
|
||||
];
|
||||
|
||||
// 실행예산서 Ⅰ·Ⅱ 줄 고르기 — ST_P_Nae 0x4c245d(조회식) · 0x4c3d38(소계 닫음 거름)
|
||||
// Ⅰ = 모든 줄 · 설정 켬(+0x1768)이면 !(MLSWBDXAP 공종 .and. QTY1=0) · Ⅱ = T·E·C 줄 + RS=1 줄 · C1·E1 안 찍음
|
||||
function reportRows(nodes, mode = 1, o = {}) {
|
||||
return nodes.filter((nd) => {
|
||||
if (nd.kind === "blank") return false;
|
||||
const c = String(nd.newCode || nd.code || "").trim();
|
||||
if (mode === 2) {
|
||||
if (nd.kind === "close") return !/^[CE]1$/.test(c);
|
||||
return nd.kind === "head" || !!nd.rs;
|
||||
}
|
||||
const q = nd.st && nd.st.x ? nd.st.x.qty : 0;
|
||||
return !(o.skipZeroQty && nd.kind === "leaf" && /^[MLSWBDXAP]/.test(c) && !n0(q));
|
||||
});
|
||||
}
|
||||
// PM_Nae_Cont 양식 열(DFM TPM_NAE_CONT 머리 띠) — 설계(계획) = 2칸(QTY2·UNIT2·T_AMT2) · 실행 = 1칸
|
||||
const NAE_CONT_COLS = [
|
||||
"공종",
|
||||
"설계(계획) 수량",
|
||||
"단위",
|
||||
"금액",
|
||||
"작업명",
|
||||
"구분",
|
||||
"수량",
|
||||
"단위",
|
||||
"재료비 단가",
|
||||
"재료비 금액",
|
||||
"노무비 단가",
|
||||
"노무비 금액",
|
||||
"경비 단가",
|
||||
"경비 금액",
|
||||
"총액 단가",
|
||||
"총액 금액",
|
||||
"비고",
|
||||
];
|
||||
|
||||
// 계약,실행내역서(0623·0624) — ST_Prt 꼬리표 20623 → Prn_Nae/Prn_NaeW · 20624 → Prn_Nae_P/Prn_NaeW_P(0x4513e7)
|
||||
// 설계 내역서와 같은 인쇄 모듈을 지금 공사(계약·실행)에 씀 · SET_REP FLDCNT 0 → 내역서 기본 열
|
||||
const NAE_COLS = [
|
||||
"공종",
|
||||
"명칭",
|
||||
"규격",
|
||||
"수량",
|
||||
"단위",
|
||||
"재료비 단가",
|
||||
"재료비 금액",
|
||||
"노무비 단가",
|
||||
"노무비 금액",
|
||||
"경비 단가",
|
||||
"경비 금액",
|
||||
"합계 단가",
|
||||
"합계 금액",
|
||||
"비고",
|
||||
];
|
||||
// nodes 의 st[key] 값으로 내역서 줄 — 머리·닫음 = 금액만
|
||||
function naeRows(nodes, key) {
|
||||
return nodes
|
||||
.filter((nd) => nd.kind !== "blank")
|
||||
.map((nd) => {
|
||||
const v = (nd.st && nd.st[key]) || {};
|
||||
if (nd.kind !== "leaf")
|
||||
return [
|
||||
nd.itnum || "",
|
||||
nd.name || "",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
v.mAmt,
|
||||
"",
|
||||
v.lAmt,
|
||||
"",
|
||||
v.sAmt,
|
||||
"",
|
||||
v.tAmt,
|
||||
"",
|
||||
];
|
||||
return [
|
||||
nd.itnum || "",
|
||||
nd.name || "",
|
||||
nd.spec || "",
|
||||
v.qty,
|
||||
nd.unit || "",
|
||||
v.mUnit,
|
||||
v.mAmt,
|
||||
v.lUnit,
|
||||
v.lAmt,
|
||||
v.sUnit,
|
||||
v.sAmt,
|
||||
v.tUnit,
|
||||
v.tAmt,
|
||||
nd.newCode || nd.code || "",
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
JEOL,
|
||||
NAE_COLS,
|
||||
naeRows,
|
||||
NAE_CONT_COLS,
|
||||
reportRows,
|
||||
ORDERS,
|
||||
REPORT_COLS,
|
||||
mroundud,
|
||||
|
||||
@@ -109,46 +109,17 @@
|
||||
|
||||
function builders(ctx) {
|
||||
return {
|
||||
// 계약,실행내역서(0623) — ST_Prt 20623 → ST_P_Nae Prn_Nae(내역서 기본 양식)를 계약 내역에 · 1칸 = 계약 단가·금액
|
||||
boq: () => {
|
||||
const { conv, st } = compute(ctx);
|
||||
const E = global.STMATE_EXEC;
|
||||
return [
|
||||
{
|
||||
name: "계약내역서",
|
||||
title: "계 약 내 역 서",
|
||||
info: [`공사명 : ${S.pname(ctx)}`, `설계 ${st}차수 → 계약`],
|
||||
head: [
|
||||
[
|
||||
{ t: "공종", r: 2 },
|
||||
{ t: "명칭", r: 2 },
|
||||
{ t: "규격", r: 2 },
|
||||
{ t: "수량", r: 2 },
|
||||
{ t: "단위", r: 2 },
|
||||
{ t: "설계", c: 2 },
|
||||
{ t: "계약", c: 2 },
|
||||
{ t: "코드", r: 2 },
|
||||
],
|
||||
["단가", "금액", "단가", "금액"],
|
||||
],
|
||||
rows: conv.rows
|
||||
.map((r) =>
|
||||
r.kind === "leaf"
|
||||
? [
|
||||
r.itnum,
|
||||
r.name,
|
||||
r.spec,
|
||||
r.qty,
|
||||
r.unit,
|
||||
r.dUnit,
|
||||
r.dAmt,
|
||||
r.tUnit,
|
||||
r.tAmt,
|
||||
r.newCode,
|
||||
]
|
||||
: r.kind === "head"
|
||||
? [r.itnum, r.name, "", "", "", "", "", "", r.tAmt, ""]
|
||||
: null,
|
||||
)
|
||||
.filter(Boolean),
|
||||
head: [E.NAE_COLS],
|
||||
rows: E.naeRows(conv.nodes, st),
|
||||
},
|
||||
];
|
||||
},
|
||||
@@ -277,11 +248,11 @@
|
||||
const heads = global.STMATE_CONTRACT.levelHeads(c.tree, o.level, itmOf(ctx));
|
||||
const exSet = new Set(o.excludeHeads.map(String));
|
||||
const exGrid = S.grid(
|
||||
[["공종번호", "명칭", "규격", "금액", "레벨", "적용제외"]],
|
||||
[["공종번호", "명칭", "공종구분(ITM_TYP)", "금액", "레벨", "적용제외"]],
|
||||
heads.map((h) => [
|
||||
h.itnum,
|
||||
h.name,
|
||||
"",
|
||||
h.itmName,
|
||||
n0((c.tree.nodes.find((nd) => nd.recno === h.recno) || { st: {} }).st[c.st]?.tAmt),
|
||||
h.level,
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
rateQ: 100,
|
||||
digits: 0,
|
||||
round: 0,
|
||||
skipZeroQty: false, // 실행예산서 Ⅰ 실행수량 0 공종 빼기(출력 설정 +0x1768)
|
||||
overrides: {},
|
||||
mc: {
|
||||
code: "",
|
||||
@@ -66,85 +67,80 @@
|
||||
return { x, label, opts, budget: E.budgetFromTree(tree, stage, opts) };
|
||||
}
|
||||
|
||||
// SET_REP 0673·0674 열 이름(설계(계획) 칸 = 기준 이름)
|
||||
const cols = (label) =>
|
||||
global.STMATE_EXEC.REPORT_COLS.map(([t], i) =>
|
||||
i === 1 ? `${label === "설계" ? "설계" : label}(계획)` : t,
|
||||
);
|
||||
|
||||
function builders(ctx) {
|
||||
const info = [`공사명 : ${S.pname(ctx)}`];
|
||||
return {
|
||||
// 실행예산서 Ⅰ·Ⅱ — SET_REP.DBF 0673·0674 다섯 열(공종 · 설계(계획) · 실행예산 · 작업명 · 구분)
|
||||
// Ⅰ·Ⅱ 차이는 바이너리 미해독 · 앱 = Ⅰ 계표시 머리 · Ⅱ 공종(말단)
|
||||
b1: () => {
|
||||
const { budget, label } = compute(ctx);
|
||||
const rows = budget.nodes
|
||||
.filter((nd) => nd.kind === "head" && !nd.zone)
|
||||
.map((nd) => [
|
||||
const naeCont = (mode) => {
|
||||
const { budget, x } = compute(ctx);
|
||||
const E = global.STMATE_EXEC;
|
||||
const rows = E.reportRows(budget.nodes, mode, { skipZeroQty: x.skipZeroQty }).map((nd) => {
|
||||
const d = nd.st.d || {},
|
||||
e = nd.st.x || {};
|
||||
if (nd.kind !== "leaf")
|
||||
return [
|
||||
`${nd.itnum || ""} ${nd.name || ""}`.trim(),
|
||||
nd.st.d.tAmt,
|
||||
nd.st.x.tAmt,
|
||||
"",
|
||||
"공종",
|
||||
]);
|
||||
"",
|
||||
d.tAmt,
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
e.mAmt,
|
||||
"",
|
||||
e.lAmt,
|
||||
"",
|
||||
e.sAmt,
|
||||
"",
|
||||
e.tAmt,
|
||||
"",
|
||||
];
|
||||
return [
|
||||
{ name: "실행예산서1", title: "실 행 예 산 서", info, head: [cols(label)], rows },
|
||||
nd.itnum || "",
|
||||
d.qty,
|
||||
nd.unit || "",
|
||||
d.tAmt,
|
||||
nd.name || "",
|
||||
nd.spec || "",
|
||||
e.qty,
|
||||
nd.unit || "",
|
||||
e.mUnit,
|
||||
e.mAmt,
|
||||
e.lUnit,
|
||||
e.lAmt,
|
||||
e.sUnit,
|
||||
e.sAmt,
|
||||
e.tUnit,
|
||||
e.tAmt,
|
||||
nd.newCode || nd.code || "",
|
||||
];
|
||||
},
|
||||
b2: () => {
|
||||
const { budget, label } = compute(ctx);
|
||||
const rows = budget.nodes
|
||||
.filter((nd) => nd.kind === "leaf")
|
||||
.map((nd) => [
|
||||
`${nd.newCode || nd.code || ""} ${nd.name || ""}`.trim(),
|
||||
nd.st.d.tAmt,
|
||||
nd.st.x.tAmt,
|
||||
nd.spec || "",
|
||||
nd.unit || "",
|
||||
]);
|
||||
return [
|
||||
{ name: "실행예산서2", title: "실 행 예 산 서", info, head: [cols(label)], rows },
|
||||
];
|
||||
},
|
||||
});
|
||||
return [
|
||||
{
|
||||
name: `실행예산서${mode}`,
|
||||
title: "실 행 예 산 서",
|
||||
info,
|
||||
head: [E.NAE_CONT_COLS],
|
||||
rows,
|
||||
},
|
||||
];
|
||||
};
|
||||
return {
|
||||
// 실행예산서 Ⅰ·Ⅱ(0673·0674) — ST_Prt 꼬리표 20673·20674 → ST_P_Nae Prn_Nae_Cont1·2(같은 PM_Nae_Cont 양식)
|
||||
// Ⅰ = 모든 줄 · Ⅱ = 계표시 줄(소계 닫음 빼고) · 열 = PM_Nae_Cont 머리 띠(설계(계획) 2칸 · 실행 1칸)
|
||||
b1: () => naeCont(1),
|
||||
b2: () => naeCont(2),
|
||||
// 계약,실행내역서(0623) — 내역서 기본 양식(Prn_Nae)을 실행 내역(1칸)에
|
||||
ce: () => {
|
||||
const c = S.contractCompute(ctx);
|
||||
const { budget } = compute(ctx);
|
||||
const E = global.STMATE_EXEC;
|
||||
const x = est(ctx);
|
||||
const b = E.budgetFromTree({ nodes: c.conv.nodes }, c.st, x);
|
||||
return [
|
||||
{
|
||||
name: "계약실행내역서",
|
||||
title: "계 약 내 역 서",
|
||||
info,
|
||||
head: [
|
||||
[
|
||||
"공종",
|
||||
"명칭",
|
||||
"규격",
|
||||
"단위",
|
||||
"수량",
|
||||
"계약단가",
|
||||
"계약금액",
|
||||
"실행수량",
|
||||
"실행단가",
|
||||
"실행금액",
|
||||
],
|
||||
],
|
||||
rows: b.nodes
|
||||
.filter((nd) => nd.kind === "leaf")
|
||||
.map((nd) => [
|
||||
nd.newCode || nd.code,
|
||||
nd.name,
|
||||
nd.spec,
|
||||
nd.unit,
|
||||
nd.st.d.qty,
|
||||
nd.st.d.tUnit,
|
||||
nd.st.d.tAmt,
|
||||
nd.st.x.qty,
|
||||
nd.st.x.tUnit,
|
||||
nd.st.x.tAmt,
|
||||
]),
|
||||
head: [E.NAE_COLS],
|
||||
rows: E.naeRows(budget.nodes, "x"),
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user