Function at 0x401e40
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x44331e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x9c
push ebx
push ebp
mov ebx, ecx
push esi
push edi
mov edx, str.__Read_startup_code
mov ecx, 0x45ceb0
mov dword [esp + 0x14], ebx
call fcn.00404710
push eax
call fcn.00401870
mov eax, dword [ebx + 4]
lea ecx, [ebx + 4]
add esp, 4
call dword [eax + 4]
mov edx, str.__Read_procedures_table
mov ecx, 0x45ceb0
call fcn.00404710
push eax
call fcn.00401870
mov eax, dword [ebx + 0xd4]
lea ebp, [ebx + 0xd4]
add esp, 4
mov ecx, ebp
mov dword [esp + 0x6c], ebp
call dword [eax + 4]
mov edx, str.__Read_namespace
mov ecx, 0x45ceb0
call fcn.00404710
push eax
call fcn.00401870
mov eax, dword [ebx + 0xf4]
lea ecx, [ebx + 0xf4]
add esp, 4
call dword [eax + 4]
mov edx, str.__Read_stringspace
mov ecx, 0x45ceb0
call fcn.00404710
push eax
call fcn.00401870
mov eax, dword [ebx + 0x10c]
lea ecx, [ebx + 0x10c]
add esp, 4
call dword [eax + 4]
mov eax, 0x8000
mov dword [esp + 0x30], vtable.COpcode.0
mov word [esp + 0x34], ax
mov dword [esp + 0x38], 0
mov edx, str.__Read_tail_of_startup_code
mov ecx, 0x45ceb0
mov dword [esp + 0xb4], 0
call fcn.00404710
push eax
call fcn.00401870
mov eax, dword [esp + 0x34]
add esp, 4
lea ecx, [esp + 0x30]
call dword [eax + 4]
mov ax, word [esp + 0x34]
mov ecx, 0x802c
cmp ax, cx
je 0x401f88
movzx eax, ax
push eax
push ecx
push str.Error:_Unexpected_opcode__0x_04X_expected__but_0x_04X_found__n
call fcn.0042d47b
add esp, 0xc
lea ecx, [esp + 0x1c]
call fcn.0042cbca
lea eax, [esp + 0x1c]
push 0x455e70
push eax
call fcn.0042f49a
lea eax, [esp + 0x90]
push eax
mov ecx, 0x45df70
call fcn.004030b0
mov edi, dword [eax + 8]
mov esi, dword [ebx + 0x124]
add edi, dword [eax]
lea ecx, [ebx + 0x124]
mov dword [esp + 0x2c], ecx
mov ebx, dword [ecx + 4]
cmp esi, ebx
je 0x401fc9
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0xc
cmp esi, ebx
jne 0x401fb6
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x14]
add ecx, 0x130
mov dword [esp + 0x40], ecx
mov ebx, dword [ecx + 4]
mov esi, dword [ecx]
cmp esi, ebx
je 0x401ff8
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0xc
cmp esi, ebx
jne 0x401fe5
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx]
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x14]
add ecx, 0x13c
mov dword [esp + 0x28], ecx
mov ebx, dword [ecx + 4]
mov esi, dword [ecx]
cmp esi, ebx
je 0x402027
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0xc
cmp esi, ebx
jne 0x402014
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx]
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x14]
add ecx, 0x148
mov dword [esp + 0x3c], ecx
mov ebx, dword [ecx + 4]
mov esi, dword [ecx]
cmp esi, ebx
je 0x402056
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0xc
cmp esi, ebx
jne 0x402043
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
xor ebx, ebx
xor esi, esi
mov dword [ecx + 4], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x14]
mov byte [esp + 0xb4], 1
cmp edi, dword [eax + 0xf0]
jae 0x4020e0
mov ebp, eax
mov esi, 0xc001
mov ebx, 0xa001
jmp 0x402090
lea ecx, [esp + 0x30]
call fcn.004137f0
mov ax, word [esp + 0x34]
mov ecx, 0x9001
cmp ax, cx
je 0x4020b7
cmp ax, bx
je 0x4020b7
cmp ax, si
mov eax, 2
jne 0x4020bc
mov eax, 6
add edi, eax
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x20]
call fcn.00403280
cmp edi, dword [ebp + 0xf0]
jb 0x402090
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x6c]
mov edx, str.____Check__Jump_to_start_procedure_____Jump_to_end_of_statup_code_
mov ecx, 0x45ceb0
call fcn.00404710
push eax
call fcn.00401870
add esp, 4
cmp ebx, esi
je 0x4021f3
push ecx
mov ecx, dword [esp + 0x18]
call fcn.00405830
cmp eax, 0xffffffff
je 0x402120
push eax
mov ecx, ebp
call fcn.0042b310
mov edx, dword [eax + 0x14]
mov dword [esp + 0x18], edx
jmp 0x402128
mov dword [esp + 0x18], 0x12
mov cx, word [esi - 8]
mov word [esp + 0x34], cx
mov eax, dword [esi - 4]
mov dword [esp + 0x38], eax
mov eax, 0x8004
cmp cx, ax
jne 0x4021cc
mov eax, dword [esi - 0xc]
push 0
lea ecx, [esi - 0xc]
call dword [eax]
add esi, 0xfffffff4
mov dword [esp + 0x20], esi
cmp ebx, esi
jne 0x40216f
push 0x44d5c0
call fcn.0042d47b
add esp, 4
push str.Warning:_Omitted_address_of_jump_n
jmp 0x4021de
mov cx, word [esi - 8]
mov word [esp + 0x34], cx
mov eax, dword [esi - 4]
mov dword [esp + 0x38], eax
mov eax, 0xc001
cmp cx, ax
jne 0x4021b8
mov eax, dword [esi - 0xc]
push 0
lea ecx, [esi - 0xc]
call dword [eax]
mov eax, dword [esp + 0x18]
add esi, 0xfffffff4
mov dword [esp + 0x20], esi
cmp dword [esp + 0x38], eax
je 0x4021f3
push 0x44d5c0
call fcn.0042d47b
add esp, 4
push str.Warning:_Invalid_jump_address_n
jmp 0x4021de
push 0x44d5c0
call fcn.0042d47b
add esp, 4
push str.Warning:_Invalid_opcode_for_jump_addres_n
jmp 0x4021de
push 0x44d5c0
call fcn.0042d47b
add esp, 4
push str.Warning:_Omitted___Jump_to_start_procedure_____Jump_to_end_of_statup_code__n
call fcn.0042d47b
add esp, 4
push 0x44d5c0
call fcn.0042d47b
add esp, 4
push str.____Check___of_argument_to_start_procedure__n
call fcn.0042d47b
add esp, 4
lea ecx, [esp + 0x70]
push 0x37
push str.Warning:_Omitted____of_argument_to_start_procedure__n
mov dword [esp + 0x8c], 0xf
mov dword [esp + 0x88], 0
mov byte [esp + 0x78], 0
call fcn.00403890
mov byte [esp + 0xb4], 2
cmp ebx, esi
je 0x4022d0
mov cx, word [esi - 8]
add esi, 0xfffffff4
mov word [esp + 0x34], cx
mov eax, dword [esi + 8]
mov dword [esp + 0x38], eax
mov eax, 0x8003
cmp cx, ax
jne 0x4022a7
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
mov dword [esp + 0x20], esi
cmp ebx, esi
je 0x4022d0
mov cx, word [esi - 8]
add esi, 0xfffffff4
mov word [esp + 0x34], cx
mov eax, dword [esi + 8]
mov dword [esp + 0x38], eax
mov eax, 0x9001
cmp cx, ax
je 0x402299
mov eax, 0xa001
cmp cx, ax
je 0x402299
mov eax, 0xc001
cmp cx, ax
jne 0x4022d0
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
mov dword [esp + 0x20], esi
jmp 0x402306
push 0x44d5c0
call fcn.0042d47b
add esp, 4
push str.Warning:_Omitted_expected_opcode_0x8003._Opcode_with__of_arguments_will_be_not_analysed_n
call fcn.0042d47b
add esp, 4
push 0x44d5c0
call fcn.0042d47b
add esp, 4
jmp 0x402306
push 0x44d5c0
call fcn.0042d47b
add esp, 4
cmp dword [esp + 0x84], 0x10
lea eax, [esp + 0x70]
cmovae eax, dword [esp + 0x70]
push eax
push 0x44d6f0
call fcn.0042d47b
push 0x44d5c0
call fcn.0042d47b
add esp, 0xc
push str.____Extract__Export_var__section_n
call fcn.0042d47b
mov ebx, dword [esp + 0x18]
add esp, 4
lea eax, [esp + 0x1c]
push 0x402bb0
push str.Error:_Malformed__Export_var__section_n
push 2
push 0x8016
push dword [esp + 0x50]
mov ecx, ebx
push eax
call fcn.00402970
push str.____Extract__Set_exported_var_values__section_n
call fcn.0042d47b
add esp, 4
lea eax, [esp + 0x1c]
push 0x402bd0
push str.Error:_Malformed__Set_exported_var_values__section_n
push 3
push 0x8015
push dword [esp + 0x38]
mov ecx, ebx
push eax
call fcn.00402970
push str.____Extract__Export_procedures__section_n
call fcn.0042d47b
add esp, 4
lea eax, [esp + 0x1c]
push 0x402c30
push str.Error:_Malformed__Export_procedures__section_n
push 3
push 0x8017
push dword [esp + 0x4c]
mov ecx, ebx
push eax
call fcn.00402970
push str.____Extract__Global_variables__section_n
call fcn.0042d47b
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
sub ecx, esi
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ebx, edx
shr ebx, 0x1f
add esp, 4
xor edi, edi
add ebx, edx
je 0x4023f8
nop
movzx eax, word [esi + 4]
mov ecx, 0x9001
cmp ax, cx
je 0x4023e6
mov ecx, 0xa001
cmp ax, cx
je 0x4023e6
mov ecx, 0xc001
cmp ax, cx
jne 0x402643
mov ecx, dword [esp + 0x2c]
push esi
call fcn.00403280
inc edi
add esi, 0xc
cmp edi, ebx
jb 0x4023c0
push str.__Read_procedures_bodies_n
call fcn.0042d47b
mov ebx, dword [esp + 0x18]
add esp, 4
mov edx, dword [ebx + 0x158]
lea esi, [ebx + 0x154]
mov dword [esp + 0x44], esi
push dword [esp + 0x44]
push ecx
mov ecx, dword [esi]
call fcn.00404ab0
mov eax, dword [esi]
add esp, 8
mov dword [esi + 4], eax
push dword [esp + 0x44]
mov edx, dword [ebx + 0x164]
push ecx
mov ecx, dword [ebx + 0x160]
call fcn.00404ab0
mov eax, dword [ebx + 0x160]
mov dword [ebx + 0x164], eax
mov ecx, dword [ebx + 0xdc]
sub ecx, dword [ebx + 0xd8]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add esp, 8
add eax, edx
push eax
mov ecx, esi
call fcn.00403360
mov esi, dword [ebx + 0xdc]
sub esi, dword [ebx + 0xd8]
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea ecx, [ebx + 0x160]
call fcn.00403360
xor esi, esi
mov eax, 0x8000
xor edi, edi
mov dword [esp + 0x48], vtable.CNode.0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], vtable.COpcode.0
mov word [esp + 0x54], ax
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], esi
mov byte [esp + 0xb4], 3
mov ecx, dword [ebx + 0xdc]
sub ecx, dword [ebx + 0xd8]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
mov dword [esp + 0x3c], edi
add eax, edx
je 0x402830
mov dword [esp + 0x18], edi
mov dword [esp + 0x28], edi
nop
push esi
push str.____Procedure:__d_r
call fcn.0042d47b
mov eax, dword [ebp + 0x14]
sub eax, dword [ebp + 0x10]
add esp, 8
sar eax, 2
cmp esi, eax
jae 0x402934
mov eax, dword [ebp + 4]
push 0
mov ebx, dword [eax + edi + 0x14]
mov eax, dword [ebp + 0x10]
push 0
mov eax, dword [eax + esi*4]
push ebx
mov ecx, 0x45df70
mov dword [esp + 0x38], ebx
mov dword [esp + 0x4c], eax
call fcn.00402fa0
mov eax, dword [ebp + 0x14]
sub eax, dword [ebp + 0x10]
sar eax, 2
cmp esi, eax
jae 0x402908
mov eax, dword [ebp + 4]
mov eax, dword [eax + edi + 0x14]
add eax, dword [esp + 0x40]
cmp ebx, eax
jae 0x4027ec
lea ecx, [esp + 0x50]
call fcn.004137f0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], ebx
mov esi, dword [eax]
add esi, dword [esp + 0x18]
lea eax, [esp + 0x48]
mov edi, dword [esi + 4]
cmp eax, edi
jae 0x4026b1
mov eax, dword [esi]
lea ecx, [esp + 0x48]
cmp eax, ecx
ja 0x4026b1
mov ebp, dword [esi + 8]
sub ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 3
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
cmp edi, ebp
jne 0x40267d
mov ecx, ebp
sub ecx, edi
mov eax, 0x38e38e39
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 1
jae 0x40267d
sub edi, dword [esi]
mov eax, 0x38e38e39
imul edi
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x71c71c7
sub eax, ecx
cmp eax, 1
jb 0x4028fe
sub ebp, dword [esi]
mov eax, 0x38e38e39
imul ebp
sar edx, 3
lea edi, [ecx + 1]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, ecx
shr edx, 1
mov eax, 0x71c71c7
sub eax, edx
cmp eax, ecx
jae 0x40266e
xor ecx, ecx
jmp 0x402670
push str.Error:_Malformed__Global_variables__section_n
call fcn.0042d47b
add esp, 4
lea ecx, [esp + 0x90]
call fcn.0042cbca
push 0x455e70
lea eax, [esp + 0x94]
push eax
call fcn.0042f49a
add ecx, edx
cmp ecx, edi
cmovb ecx, edi
push ecx
mov ecx, esi
call fcn.00403b50
mov eax, dword [esi]
lea ecx, [ebx + ebx*8]
lea eax, [eax + ecx*4]
mov ecx, dword [esi + 4]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x8c], ecx
mov byte [esp + 0xb4], 4
test ecx, ecx
je 0x402798
push eax
call fcn.00413310
jmp 0x402798
mov ebx, dword [esi + 8]
cmp edi, ebx
jne 0x40272f
mov ecx, ebx
sub ecx, edi
mov eax, 0x38e38e39
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 1
jae 0x40272f
mov ebp, dword [esi]
sub edi, ebp
mov eax, 0x38e38e39
imul edi
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x71c71c7
sub eax, ecx
cmp eax, 1
jb 0x4028fe
sub ebx, ebp
mov eax, 0x38e38e39
imul ebx
sar edx, 3
lea edi, [ecx + 1]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, ecx
shr edx, 1
mov eax, 0x71c71c7
sub eax, edx
cmp eax, ecx
jae 0x402720
xor ecx, ecx
jmp 0x402722
add ecx, edx
cmp ecx, edi
cmovb ecx, edi
push ecx
mov ecx, esi
call fcn.00403b50
mov ecx, dword [esi + 4]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ecx
test ecx, ecx
je 0x402798
mov dword [ecx], vtable.CNode.0
mov eax, dword [esp + 0x4c]
mov dword [ecx + 4], eax
mov dword [ecx + 8], vtable.COpcode.0
mov ax, word [esp + 0x54]
mov word [ecx + 0xc], ax
mov eax, dword [esp + 0x58]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x5c]
mov dword [ecx + 0x14], eax
add ecx, 0x18
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
lea eax, [esp + 0x60]
push eax
mov byte [esp + 0xb8], 7
call fcn.00413510
mov byte [esp + 0xb4], 3
add dword [esi + 4], 0x24
mov ax, word [esp + 0x54]
mov ecx, 0x9001
cmp ax, cx
je 0x4027cc
mov ecx, 0xa001
cmp ax, cx
je 0x4027cc
mov ecx, 0xc001
cmp ax, cx
mov eax, 2
jne 0x4027d1
mov eax, 6
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x28]
add ebx, eax
mov dword [esp + 0x2c], ebx
jmp 0x402563
mov eax, dword [esp + 0x14]
add dword [esp + 0x18], 0xc
mov ecx, dword [eax + 0xdc]
sub ecx, dword [eax + 0xd8]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
inc esi
add edi, 0x1c
add eax, edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x28], edi
cmp esi, eax
jb 0x402520
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov byte [esp + 0xb4], 2
mov dword [esp + 0x48], vtable.CNode.0
test esi, esi
je 0x40287c
cmp esi, edi
je 0x40285b
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0x24
cmp esi, edi
jne 0x402848
mov esi, dword [esp + 0x60]
push esi
call fcn.0042d556
add esp, 4
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
cmp dword [esp + 0x84], 0x10
mov dword [esp + 0x50], vtable.COpcode.0
jb 0x40289a
push dword [esp + 0x70]
call fcn.0042d556
add esp, 4
mov byte [esp + 0xb4], 0
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x84], 0xf
mov dword [esp + 0x80], 0
mov byte [esp + 0x70], 0
test ebx, ebx
je 0x4028e8
mov ebp, dword [esp + 0x20]
mov esi, ebx
cmp ebx, ebp
je 0x4028df
nop
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0xc
cmp esi, ebp
jne 0x4028d0
push ebx
call fcn.0042d556
add esp, 4
mov ecx, dword [esp + 0xac]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push str.vector_T__too_long
call fcn.0042c653
push esi
push str.Warning:_Invalid_index_of_procedure___d_._Exception_will_be_thrown_n
call fcn.0042d47b
add esp, 8
lea ecx, [esp + 0x90]
call fcn.0042cbca
push 0x455e70
lea eax, [esp + 0x94]
push eax
call fcn.0042f49a
push esi
push str.Warning:_Invalid_index_of_procedure___d_._Exception_will_be_thrown_n
call fcn.0042d47b
add esp, 8
lea ecx, [esp + 0x90]
call fcn.0042cbca
push 0x455e70
lea eax, [esp + 0x94]
push eax
call fcn.0042f49a
int3