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

Disassembly:
push 0xffffffffffffffff
push 0x429db0
mov eax, dword fs:[0]
push eax
sub esp, 0x70
push ebx
push ebp
push esi
push edi
mov eax, dword [0x435028]
xor eax, esp
push eax
lea eax, [esp + 0x84]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x94]
mov al, byte [ebp + 0x98]
not al
and al, 1
jne 0x40a824
mov eax, dword [ebp + 0x98]
mov ecx, eax
shr ecx, 1
test cl, 1
jne 0x40a824
and eax, 0x18
cmp al, 0x18
je 0x40a824
mov eax, dword [ebp + 0x98]
mov edx, eax
shr edx, 4
test dl, 1
je 0x40a81a
shr eax, 3
test al, 1
je 0x40a824
xor ebx, ebx
cmp dword [ebp + 0x118], ebx
je 0x40a82b
xor al, al
jmp 0x40b05d
mov ecx, dword [ebp + 0x10c]
cmp ecx, ebx
jne 0x40a83b
mov dword [esp + 0x18], ebx
jmp 0x40a848
mov eax, dword [ecx + 0x10]
sub eax, dword [ecx + 0xc]
sar eax, 2
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
or eax, ebx
je 0x40b05b
lea ecx, [esp + 0x44]
push ecx
call fcn.004125d0
xor edi, edi
xor esi, esi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], esi
cmp ebx, ebx
jb 0x40a9f7
ja 0x40a890
cmp dword [esp + 0x18], ebx
jbe 0x40a9f7
lea ecx, [ecx]
mov ebp, dword [esp + 0x94]
push esi
push edi
mov eax, ebp
call fcn.00409850
mov ebx, eax
mov edx, dword [ebx + 0x88]
shr edx, 5
test dl, 1
je 0x40a9ba
lea eax, [ebp + 0xf0]
push eax
push ecx
push esi
push edi
mov eax, ebp
call fcn.00409850
add esp, 4
push eax
call fcn.00406e60
cmp dword [ebx + 0x90], 0
lea edi, [ebx + 0x8c]
je 0x40a8e3
cmp dword [edi + 8], 0
ja 0x40a8ea
mov esi, ebx
call fcn.00407170
cmp dword [ebx + 0xa0], 0
lea eax, [ebx + 0x9c]
je 0x40a8ff
cmp dword [eax + 8], 0
ja 0x40a907
push eax
mov ecx, ebx
call fcn.004072d0
mov ebp, dword [ebx + 0x80]
lea esi, [ebx + 0x48]
call fcn.0040f830
mov ecx, ebx
mov esi, eax
call fcn.00405e30
push 1
mov edi, ebx
lea esi, [esi + eax + 0x1e]
call fcn.00407670
add esi, eax
movzx eax, byte [ebx + 0x7e]
cmp eax, 1
je 0x40a940
cmp eax, 2
je 0x40a940
cmp eax, 3
jne 0x40a943
add esi, 0xb
mov ecx, dword [esp + 0x34]
sub esi, ebp
mov eax, esi
cdq
add ecx, eax
mov eax, dword [esp + 0x38]
adc eax, edx
xor edx, edx
add ebp, dword [ebx + 0x40]
mov ebx, dword [ebx + 0x44]
adc ebx, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x38], eax
xor esi, esi
mov dword [esp + 0x78], eax
lea eax, [esp + 0x5c]
lea edi, [esp + 0x44]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], ecx
call fcn.0040b690
mov ecx, dword [esp + 0x54]
mov eax, ecx
sub eax, dword [esp + 0x50]
sar eax, 5
cmp eax, esi
jne 0x40a9c0
push 0xe2
xor ecx, ecx
call fcn.00405910
mov ecx, dword [esp + 0x54]
jmp 0x40a9c8
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
add edi, 1
adc esi, 0
xor eax, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], esi
cmp esi, eax
jb 0x40a890
ja 0x40a9ec
cmp edi, dword [esp + 0x18]
jb 0x40a890
mov ebp, dword [esp + 0x94]
xor ebx, ebx
jmp 0x40a9fb
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
sub ecx, eax
sar ecx, 5
mov edi, ecx
cmp edi, ebx
je 0x40b035
mov edx, dword [ebp + 0x114]
cmp byte [edx + 0x34], 0
je 0x40aa46
mov eax, dword [ebp + 0x104]
mov ebx, dword [eax + 0x48]
mov ecx, dword [eax + 8]
add ebx, dword [edx + 0x28]
mov eax, dword [eax + 0x4c]
adc eax, dword [edx + 0x2c]
mov esi, dword [ecx]
mov edx, dword [esi + 0x18]
push eax
push ebx
call edx
mov eax, dword [ebp + 0x114]
mov byte [eax + 0x34], 0
xor ebx, ebx
jmp 0x40aa51
mov esi, dword [ebp + 0x104]
call fcn.0040eca0
mov ecx, dword [ebp + 0x40]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
call eax
dec edi
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ebx
lea ebx, [ebx]
cmp eax, dword [esp + 0x24]
jne 0x40aa9e
mov esi, dword [esp + 0x34]
sub esi, dword [ebp + 0x80]
mov edi, dword [esp + 0x38]
sbb edi, dword [ebp + 0x84]
mov bl, 1
jmp 0x40ab07
inc eax
lea ecx, [esp + 0x44]
call fcn.0040b600
mov dl, byte [ebp + 0x98]
mov edi, dword [eax]
mov ecx, dword [eax + 4]
not dl
and dl, 1
je 0x40aabe
xor eax, eax
jmp 0x40aaff
mov esi, dword [ebp + 0x10c]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
xor edx, edx
sar eax, 2
cmp ecx, edx
ja 0x40aae2
jb 0x40aad9
cmp edi, eax
jae 0x40aae2
mov eax, edi
and eax, ecx
cmp eax, 0xffffffff
jne 0x40aae6
xor eax, eax
jmp 0x40aaff
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
sar ecx, 2
cmp edi, ecx
jb 0x40aaf9
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov edx, dword [esi + 0xc]
mov eax, dword [edx + edi*4]
mov esi, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
xor bl, bl
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x50]
sar eax, 5
cmp dword [esp + 0x18], eax
jb 0x40ab1e
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x20]
lea eax, [ecx + edx]
mov dword [eax + 0x10], esi
sub esi, dword [eax + 8]
mov dword [eax + 0x14], edi
sbb edi, dword [eax + 0xc]
add dword [esp + 0x2c], esi
adc dword [esp + 0x30], edi
test bl, bl
jne 0x40ab55
inc dword [esp + 0x18]
add dword [esp + 0x20], 0x20
mov eax, dword [esp + 0x18]
xor ebx, ebx
jmp 0x40aa80
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x44]
mov edi, eax
call fcn.0040b600
mov edx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
jl 0x40ab92
jg 0x40ab7e
cmp edx, ebx
jbe 0x40ab92
add edx, dword [esp + 0x34]
mov ecx, dword [ebp + 0x40]
adc eax, dword [esp + 0x38]
mov esi, dword [ecx]
push eax
mov eax, dword [esi + 0x18]
push edx
call eax
mov esi, ebp
call fcn.004092e0
lea ecx, [esp + 0x1c]
push ecx
push 0x200
lea eax, [ebp + 0xc]
mov dword [esp + 0x24], ebx
call fcn.0040b3a0
test eax, eax
je 0x40abde
mov eax, dword [esp + 0x1c]
lea ebx, [esp + 0x5c]
mov dword [eax + 0x4c], 0x200
mov dword [esp + 0x20], eax
call fcn.0040a490
mov byte [esp + 0x8c], 1
cmp dword [eax + 0x18], 8
jb 0x40abe4
mov eax, dword [eax + 4]
jmp 0x40abe7
mov dword [esp + 0x20], ebx
jmp 0x40ac20
add eax, 4
mov esi, dword [esp + 0x1c]
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0xc]
push 0
mov ecx, esi
call eax
lea ecx, [esp + 0x5c]
mov byte [esp + 0x8c], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esi]
mov edx, dword [edx + 0x10]
push eax
push ecx
mov ecx, esi
call edx
lea esp, [esp]
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, ebx
sub ecx, eax
sar ecx, 5
cmp edi, ecx
jb 0x40ac41
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, edi
shl ecx, 5
mov edx, dword [ecx + eax + 0x1c]
mov esi, dword [ecx + eax + 0x18]
add ecx, eax
test edx, edx
jl 0x40ac9a
jg 0x40ac5a
test esi, esi
jbe 0x40ac9a
test edi, edi
sete byte [esp + 0x18]
mov eax, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x24]
push 1
push eax
mov eax, dword [ecx + 0x10]
push edx
mov edx, dword [ecx + 0x14]
push esi
push edx
mov edx, dword [ecx + 0xc]
push eax
mov eax, dword [ecx + 8]
push edx
push eax
push ebp
call fcn.0040b080
cmp byte [esp + 0x18], 0
jne 0x40ad5b
mov ebp, dword [esp + 0x94]
dec edi
jmp 0x40ac20
mov dword [esp + 0x1c], edi
test edi, edi
jbe 0x40acce
lea esi, [edi - 1]
mov eax, esi
lea ecx, [esp + 0x44]
call fcn.0040b600
cmp dword [eax + 0x1c], 0
jg 0x40acc4
jl 0x40acbe
cmp dword [eax + 0x18], 0
ja 0x40acc4
mov edi, esi
test edi, edi
ja 0x40aca2
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
test edi, edi
mov esi, edi
sete byte [esp + 0x18]
mov ebp, edi
shl esi, 5
lea ebx, [ebx]
sub ebx, eax
sar ebx, 5
cmp ebp, ebx
jb 0x40acf3
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov eax, dword [esp + 0x50]
cmp ebp, dword [esp + 0x1c]
sete bl
cmp byte [esp + 0x18], 0
je 0x40ad09
test bl, bl
je 0x40ad09
mov cl, 1
jmp 0x40ad0b
xor cl, cl
mov edx, dword [eax + esi + 0x18]
push ecx
mov ecx, dword [esp + 0x24]
push 0
push ecx
mov ecx, dword [eax + esi + 0x1c]
neg edx
adc ecx, 0
neg ecx
push ecx
mov ecx, dword [eax + esi + 0x10]
push edx
mov edx, dword [eax + esi + 0x14]
push edx
mov edx, dword [eax + esi + 0xc]
mov eax, dword [eax + esi + 8]
push ecx
mov ecx, dword [esp + 0xb0]
push edx
push eax
push ecx
call fcn.0040b080
test bl, bl
jne 0x40ac85
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
inc ebp
add esi, 0x20
jmp 0x40ace0
mov esi, dword [esp + 0x94]
mov eax, dword [esi + 0x180]
xor edi, edi
cmp eax, edi
je 0x40ad83
push eax
call sub.mfc90u.dll_delete
add esp, 4
mov dword [esi + 0x184], edi
mov dword [esi + 0x180], edi
mov edx, dword [esp + 0x40]
cmp edx, edi
jg 0x40ada9
mov eax, dword [esp + 0x3c]
jl 0x40ad95
cmp eax, edi
jae 0x40ada9
add eax, dword [esp + 0x34]
mov ecx, dword [esi + 0x40]
adc edx, dword [esp + 0x38]
mov esi, dword [ecx]
push edx
mov edx, dword [esi + 0x18]
push eax
call edx
xor eax, eax
mov dword [esp + 0x18], eax
nop
cmp eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x54]
sete bl
sub ecx, dword [esp + 0x50]
mov byte [esp + 0x17], bl
sar ecx, 5
cmp eax, ecx
jb 0x40add0
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x94]
mov al, byte [edx + 0x98]
shl ebp, 5
add ebp, dword [esp + 0x50]
not al
mov edi, dword [ebp]
mov ecx, dword [ebp + 4]
test al, 1
je 0x40adfe
mov dword [esp + 0x1c], 0
jmp 0x40ae45
mov esi, dword [edx + 0x10c]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
xor edx, edx
sar eax, 2
cmp ecx, edx
ja 0x40ae22
jb 0x40ae19
cmp edi, eax
jae 0x40ae22
mov eax, edi
and eax, ecx
cmp eax, 0xffffffff
jne 0x40ae28
mov dword [esp + 0x1c], edx
jmp 0x40ae45
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
sar ecx, 2
cmp edi, ecx
jb 0x40ae3b
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov edx, dword [esi + 0xc]
mov eax, dword [edx + edi*4]
mov dword [esp + 0x1c], eax
test bl, bl
je 0x40ae5b
mov eax, dword [esp + 0x94]
call fcn.00401840
mov ecx, eax
mov eax, edx
jmp 0x40ae6e
mov eax, dword [esp + 0x18]
inc eax
lea ecx, [esp + 0x44]
call fcn.0040b600
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edi, dword [ebp]
mov esi, dword [ebp + 4]
add edi, 1
adc esi, 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ecx
cmp esi, eax
ja 0x40af0b
jb 0x40ae90
cmp edi, ecx
jae 0x40af0b
mov ecx, dword [esp + 0x94]
mov dl, byte [ecx + 0x98]
not dl
test dl, 1
je 0x40aea8
xor eax, eax
jmp 0x40aeeb
mov eax, ecx
mov ebx, dword [eax + 0x10c]
mov eax, dword [ebx + 0x10]
sub eax, dword [ebx + 0xc]
xor ecx, ecx
sar eax, 2
cmp esi, ecx
ja 0x40aece
jb 0x40aec5
cmp edi, eax
jae 0x40aece
mov ecx, edi
and ecx, esi
cmp ecx, 0xffffffff
jne 0x40aed2
xor eax, eax
jmp 0x40aeeb
mov edx, dword [ebx + 0x10]
sub edx, dword [ebx + 0xc]
sar edx, 2
cmp edi, edx
jb 0x40aee5
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + edi*4]
mov ecx, dword [ebp + 0x18]
add dword [eax + 0x40], ecx
mov edx, dword [ebp + 0x1c]
adc dword [eax + 0x44], edx
add edi, 1
adc esi, 0
cmp esi, dword [esp + 0x38]
jb 0x40ae90
ja 0x40af0b
cmp edi, dword [esp + 0x34]
jb 0x40ae90
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x40af17
xor ecx, ecx
jmp 0x40af27
dec eax
lea ecx, [esp + 0x44]
call fcn.0040b600
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
mov edx, dword [esp + 0x1c]
mov ebx, dword [edx + 0x40]
mov edi, dword [edx + 0x44]
mov esi, dword [esp + 0x94]
add ebx, ecx
adc edi, eax
add esi, 0x38
cmp dword [esi + 0x40], 0
jne 0x40af57
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0x48]
test eax, eax
ja 0x40af53
test ecx, ecx
jbe 0x40af57
add ebx, ecx
adc edi, eax
mov ebp, dword [esi + 8]
cmp edi, 0x7fffffff
jb 0x40b004
ja 0x40af71
cmp ebx, 0xffffffff
jbe 0x40b004
mov eax, dword [ebp]
mov edx, dword [eax + 0x14]
mov ecx, ebp
call edx
sub eax, ebx
sbb edx, edi
mov edi, dword [ebp]
neg eax
mov ebx, 0
adc edx, ebx
push 2
neg edx
push edx
push eax
mov eax, dword [edi + 0x10]
mov ecx, ebp
call eax
mov edi, dword [esp + 0x1c]
push esi
push edi
call fcn.004073b0
and dword [edi + 0x88], 0xffffffdf
mov eax, dword [esi + 0x18]
cmp eax, ebx
je 0x40afd6
mov ecx, dword [esi + 8]
mov edx, dword [ecx]
mov edx, dword [edx + 0x30]
push eax
mov eax, dword [esi + 0x2c]
push eax
call edx
mov eax, dword [esi + 0x60]
shr eax, 4
test al, 1
je 0x40afd3
mov ecx, dword [esi + 0x18]
add dword [esi + 0x38], ecx
adc dword [esi + 0x3c], ebx
mov dword [esi + 0x18], ebx
mov edx, dword [esi + 0x60]
and edx, 0x90
cmp dl, 0x90
jne 0x40aff0
push esi
call fcn.0040e800
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], edx
cmp byte [esp + 0x17], 0
jne 0x40b016
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
jmp 0x40adb0
mov eax, dword [ebp]
mov edx, dword [eax + 0x10]
push 0
push edi
push ebx
mov ecx, ebp
call edx
xor ebx, ebx
jmp 0x40af98
mov edi, dword [esp + 0x94]
call fcn.0040a710
mov ecx, dword [esp + 0x20]
cmp ecx, ebx
je 0x40b031
mov eax, dword [ecx]
mov edx, dword [eax + 0x18]
call edx
mov eax, dword [esp + 0x50]
cmp eax, ebx
je 0x40b042
push eax
call sub.mfc90u.dll_delete
add esp, 4
mov eax, dword [esp + 0x44]
push eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
call sub.mfc90u.dll_delete
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x84]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 4