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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x28], edx
movzx edi, byte [ebx + 0x14]
mov dword [esp], 0x4220d0
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
call sym.___emutls_get_address
mov ebp, eax
mov eax, edi
test al, al
jne 0x40fdc6
lea esi, [esi]
nop
cmp byte [ebp], 0
movzx esi, byte [ebx + 0x20]
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
jne 0x40ff40
mov eax, esi
test al, al
je 0x410200
mov eax, dword [ebx + 0x18]
mov edx, dword [ebx + 0x1c]
lea ecx, [esp + 0x40]
mov dword [esp], eax
mov dword [esp + 4], edx
call sym._eqcopy___stdZassertions_u30_12
mov eax, edi
sub esp, 8
test al, al
jne 0x40fd71
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
cmp edx, 2
jne 0x40ffb0
cmp word [eax + 4], 0x682d
je 0x40ffd2
cmp byte [ebp], 0
movzx edx, byte [ebx + 0x2c]
jne 0x4101d4
test dl, dl
je 0x41015f
mov eax, dword [ebx + 0x24]
mov edx, dword [ebx + 0x28]
lea ecx, [esp + 0x48]
mov dword [esp], eax
mov dword [esp + 4], edx
call sym._eqcopy___stdZassertions_u30_12
sub esp, 8
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x40fd67
test dword [eax], 0x40000000
je 0x410270
cmp byte [ebp], 0
jne 0x4101d0
cmp dword [esp + 0x40], 2
mov eax, dword [esp + 0x44]
jne 0x40ff78
cmp word [eax + 4], 0x2d2d
jne 0x40ff78
mov edx, 2
mov ecx, ebx
call sym._consume__6758Z85sersZ4953494853ZOnimbleZpkgs50Zargparse4552O48O4945e57c50ebe51f5552b49dfc52df555551545654ae54dab55545156a5654
movzx edi, byte [ebp]
mov eax, edi
test al, al
mov eax, dword [esp + 0x44]
jne 0x4101d4
test eax, eax
je 0x40fdba
test dword [eax], 0x40000000
je 0x410280
mov edi, esi
cmp byte [ebx + 0x14], 0
je 0x40fcb0
mov ecx, dword [esp + 0x28]
mov edx, ebx
call sym._takeArgsFromExtra__loader_u309_8
cmp byte [ebp], 0
jne 0x40ff40
mov eax, dword [ebx + 0xc]
test eax, eax
jle 0x40fef5
mov edx, 4
mov ecx, 0x20
call sym._nimNewObj_8
mov esi, dword [0x42391c]
mov edi, dword [0x423920]
mov dword [eax], sym._rttiDestroy__6758Z85sersZ4953494853ZOnimbleZpkgs50Zargparse4552O48O4945e57c50ebe51f5552b49dfc52df555551545654ae54dab55545156a
mov dword [eax + 8], str.UsageError
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x1c], eax
test ecx, ecx
mov dword [esp], esi
lea eax, [ecx + 4]
mov dword [esp + 4], edi
cmovne ecx, eax
call sym._nsuJoinSep_16
sub esp, 8
cmp byte [ebp], 0
mov esi, eax
mov edi, edx
jne 0x40ff40
lea ecx, [eax + 0x15]
call sym._rawNewString_4
mov ecx, edx
lea edx, [eax + edx + 4]
mov dword [edx], 0x6e6b6e55
mov dword [edx + 4], 0x206e776f
mov dword [edx + 8], 0x75677261
mov dword [edx + 0xc], 0x746e656d
mov dword [edx + 0x10], 0x3a297328
mov word [edx + 0x14], 0x20
lea edx, [eax + 0x15]
test esi, esi
jle 0x40fea8
mov dword [esp + 0x28], edx
mov edx, esi
lea eax, [eax + ecx + 0x19]
add edx, 1
mov dword [esp], eax
mov dword [esp + 8], edx
lea edx, [edi + 4]
mov dword [esp + 4], edx
mov dword [esp + 0x20], ecx
call sym._memcpy
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
add edx, esi
mov eax, dword [esp + 0x1c]
mov dword [eax + 0xc], edx
mov edx, str.UsageError
mov dword [eax + 0x10], ecx
mov ecx, eax
mov dword [eax + 4], 0
mov dword [esp + 8], 0x25e
mov dword [esp + 4], str.backend.nim
mov dword [esp], str.parse
call sym._raiseExceptionEx_20
sub esp, 0xc
test edi, edi
je 0x40feef
test dword [edi], 0x40000000
je 0x41040e
cmp byte [ebp], 0
jne 0x40ff40
cmp byte [esp + 0x24], 0
je 0x40ff69
mov esi, dword [ebx + 0x40]
test esi, esi
jle 0x40ff69
xor edi, edi
jmp 0x40ff1f
call eax
cmp byte [ebp], 0
jne 0x40ff40
add edi, 1
cmp esi, edi
je 0x40ff69
mov eax, dword [ebx + 0x44]
mov ecx, dword [eax + edi*8 + 8]
mov eax, dword [eax + edi*8 + 4]
test ecx, ecx
jne 0x40ff10
call eax
cmp byte [ebp], 0
je 0x40ff18
lea esi, [esi]
lea esi, [esi]
mov dword [esp], 0x422050
call sym.___emutls_get_address
mov edx, dword [eax]
mov ebx, eax
mov eax, dword [edx]
cmp word [eax + 0xa], 2
jle 0x40ff69
mov eax, dword [eax + 0xc]
cmp dword [eax + 0xc], 0x3c198a00
je 0x410290
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
mov dword [esp], 1
mov edx, 1
mov ecx, ebx
call sym._advance__6758Z85sersZ4953494853ZOnimbleZpkgs50Zargparse4552O48O4945e57c50ebe51f5552b49dfc52df555551545654ae54dab55545156a5654
sub esp, 4
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40ffa2
test dword [eax], 0x40000000
je 0x4101f0
cmp byte [ebp], 0
je 0x40fdbc
jmp 0x40ff40
cmp edx, 6
jne 0x40fd24
cmp dword [eax + 4], 0x65682d2d
jne 0x40fd24
cmp word [eax + 8], 0x706c
jne 0x40fd24
movzx eax, byte [esp + 0x70]
mov byte [esp], al
call sym._help__loader_u297_4
sub esp, 4
cmp byte [ebp], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edx
jne 0x4101c0
xor ecx, ecx
mov dword [esp + 0x3c], 0
call fcn.0040f5d0
movzx edx, byte [ebp]
test dl, dl
jne 0x410113
mov edx, 4
mov ecx, 0x30
call sym._nimNewObj_8
mov edx, dword [0x423a24]
mov dword [esp + 0x3c], eax
mov dword [eax], fcn.0040f780
mov eax, dword [0x423a20]
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 8], str.ShortCircuit
add ecx, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
call sym._eqcopy___stdZassertions_u30_12
mov ecx, 0x1d
sub esp, 8
call sym._rawNewString_4
lea ecx, [eax + edx + 4]
mov dword [ecx], 0x726f6853
mov dword [ecx + 4], 0x72694374
mov dword [ecx + 8], 0x74697563
mov dword [ecx + 0xc], 0x206e6f20
lea ecx, [eax + edx + 0x14]
add eax, 0x1d
mov dword [ecx], 0x70677261
mov dword [ecx + 4], 0x65737261
mov dword [ecx + 8], 0x6c65685f
mov word [ecx + 0xc], 0x70
mov ecx, dword [esp + 0x3c]
mov dword [esp + 4], edx
mov dword [esp], eax
add ecx, 0xc
call sym._eqsink___stdZassertions_u36_12
sub esp, 8
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
mov dword [esp], eax
mov eax, dword [esp + 0x1c]
add ecx, 0x28
mov dword [esp + 4], eax
call sym._eqcopy___stdZassertions_u30_12
sub esp, 8
mov eax, dword [esp + 0x3c]
lea ecx, [esp + 0x3c]
mov dword [esp + 0x20], eax
call sym._eqwasMoved___6758Z85sersZ4953494853ZOnimbleZpkgs50Zargparse4552O48O4945e57c50ebe51f5552b49dfc52df555551545654ae54dab55545156a
movzx edx, byte [ebp]
test dl, dl
jne 0x410113
mov dword [esp], str.raiseShortCircuit
mov ecx, dword [esp + 0x20]
mov edx, str.ShortCircuit
mov dword [esp + 8], 0x159
mov dword [esp + 4], str.backend.nim
call sym._raiseExceptionEx_20
movzx edx, byte [ebp]
sub esp, 0xc
mov byte [ebp], 0
mov ecx, dword [esp + 0x3c]
mov byte [esp + 0x20], dl
call fcn.0040f5d0
cmp byte [ebp], 0
jne 0x410390
movzx edx, byte [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov byte [ebp], dl
test eax, eax
je 0x41014f
mov eax, dword [eax]
mov dword [esp + 0x20], eax
test eax, 0x40000000
je 0x4103ad
test dl, dl
jne 0x4101c0
movzx edx, byte [ebx + 0x2c]
test dl, dl
jne 0x40fd3a
mov edx, 4
mov ecx, 0x20
call sym._nimNewObj_8
mov edx, str.UnpackDefect
mov dword [eax], sym._rttiDestroy__pureZoptions_u96_4
mov ecx, eax
mov dword [eax + 8], str.UnpackDefect
mov dword [eax + 0xc], 0x22
mov dword [eax + 0x10], 0x423a60
mov dword [eax + 4], 0
mov dword [esp + 8], 0xe6
mov dword [esp + 4], str.options.nim
mov dword [esp], 0x4238e2
call sym._raiseExceptionEx_20
sub esp, 0xc
cmp byte [ebp], 0
je sym._parse__loader_u301_24.cold
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x40fd5b
lea esi, [esi]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40ff40
test dword [eax], 0x40000000
jne 0x40ffa2
lea esi, [esi]
nop
mov dword [esp], eax
call sym._deallocShared
jmp 0x40ffa2
mov edx, 4
mov ecx, 0x20
call sym._nimNewObj_8
mov edx, str.UnpackDefect
mov dword [eax], sym._rttiDestroy__pureZoptions_u96_4
mov ecx, eax
mov dword [eax + 8], str.UnpackDefect
mov dword [eax + 0xc], 0x22
mov dword [eax + 0x10], 0x423a60
mov dword [eax + 4], 0
mov dword [esp + 8], 0xe6
mov dword [esp + 4], str.options.nim
mov dword [esp], 0x4238e2
call sym._raiseExceptionEx_20
sub esp, 0xc
cmp byte [ebp], 0
jne 0x4101d0
jmp 0x421d33
mov dword [esp], eax
call sym._deallocShared
jmp 0x40fd67
mov dword [esp], eax
call sym._deallocShared
jmp 0x40fdba
mov byte [ebp], 0
lea ecx, [esp + 0x48]
mov dword [esp], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x48], 0
call sym._eqcopy___stdZtypedthreads_u171_12
sub esp, 4
mov esi, dword [esp + 0x48]
mov dword [esp + 0x40], esi
cmp dword [esi + 0x20], 0xd
mov eax, dword [esi + 0x24]
jne 0x4103c8
cmp dword [eax + 4], 0x70677261
je 0x41041b
mov eax, 1
test eax, eax
jne 0x4103c8
cmp byte [esp + 0x24], 0
je 0x4103c8
movzx eax, byte [esp + 0x70]
mov byte [esp], al
call sym._help__loader_u297_4
movzx edi, byte [ebp]
mov esi, edx
sub esp, 4
mov edx, edi
test dl, dl
jne 0x410348
mov dword [esp], eax
mov ecx, dword [esp + 0x80]
mov dword [esp + 4], esi
call sym._write__pureZstreams_u221_12
movzx edi, byte [ebp]
sub esp, 8
mov eax, edi
cmp al, 1
je 0x410338
cmp byte [esp + 0x2c], 0
jne 0x410461
test esi, esi
je 0x410348
test dword [esi], 0x40000000
je 0x410450
mov byte [ebp], 0
mov ecx, dword [esp + 0x40]
call fcn.0040f5d0
cmp byte [ebp], 0
jne 0x40ff69
mov eax, edi
mov byte [ebp], al
test al, al
jne 0x40ff69
mov eax, dword [ebx]
mov ecx, ebx
mov edx, dword [eax + 0x1c]
mov dword [esp], 0
call sym._eqcopy___stdZtypedthreads_u171_12
sub esp, 4
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4101c0
mov eax, dword [eax]
mov dword [esp + 0x20], eax
test eax, 0x40000000
jne 0x4101c0
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
call sym._deallocShared
movzx edx, byte [ebp]
jmp 0x41014f
lea ecx, [esp + 0x40]
call sym._eqwasMoved___6758Z85sersZ4953494853ZOnimbleZpkgs50Zargparse4552O48O4945e57c50ebe51f5552b49dfc52df555551545654ae54dab55545156a
movzx edi, byte [ebp]
mov eax, edi
test al, al
jne 0x410348
mov dword [esp + 8], 0x266
mov edx, str.ShortCircuit
mov ecx, esi
mov dword [esp + 4], str.backend.nim
mov dword [esp], str.parse
call sym._raiseExceptionEx_20
movzx edi, byte [ebp]
sub esp, 0xc
jmp 0x410348
mov dword [esp], edi
call sym._deallocShared
jmp 0x40feef
cmp dword [eax + 8], 0x65737261
jne 0x4102d9
cmp dword [eax + 0xc], 0x6c65685f
jne 0x4102d9
cmp byte [eax + 0x10], 0x70
jne 0x4102d9
xor eax, eax
jmp 0x4102de
mov dword [esp], esi
call sym._deallocShared
movzx edi, byte [ebp]
jmp 0x410348
mov dword [esp], 1
call sym._exit
lea esi, [esi]
mov eax, dword [pe_dos_header]
mov edx, dword [4]
lea ecx, [esp + 0x40]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._eqcopy___stdZassertions_u30_12
push edx
push edx
ud2