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

Disassembly:
sub esp, 0x80
mov eax, dword [esp + 0x84]
mov ecx, dword [eax]
mov eax, dword [esp + 0x88]
movzx eax, word [eax]
mov edx, dword [ecx]
push ebx
push ebp
push esi
xor esi, esi
cmp ax, 0x3f
push edi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x50], edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x68], eax
jbe 0x437e48
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret
movzx ecx, ax
mov eax, 1
xor edx, edx
mov byte [esp + 0x16], 1
mov dword [esp + 0x34], ecx
call fcn.0047acb0
add eax, 0xffffffff
adc edx, 0xffffffff
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x38], esi
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x5c]
ja 0x438425
jb 0x437ea0
mov edx, dword [esp + 0x18]
cmp edx, dword [esp + 0x58]
jae 0x438425
movzx eax, word [esp + 0xa4]
mov ecx, dword [esp + 0x38]
cmp ecx, eax
jg 0x438425
test ecx, ecx
jle 0x437eca
mov edx, dword [esp + 0x2c]
mov esi, dword [edx + 8]
mov edx, dword [edx + 0xc]
or dword [esp + 0x40], esi
or dword [esp + 0x44], edx
cmp ecx, eax
jge 0x437edd
mov eax, dword [esp + 0x9c]
mov edx, dword [eax + 0x18]
mov edx, dword [edx + ecx*4]
jmp 0x437ee4
mov edx, dword [esp + 0xa8]
test dword [edx + 0x24], 0x400
mov dword [esp + 0x2c], edx
jne 0x43841f
movzx eax, byte [edx + 0x10]
mov ecx, dword [esp + 0x94]
mov ecx, dword [ecx + 4]
lea eax, [eax + eax*8]
mov eax, dword [ecx + eax*8 + 0x34]
xor ecx, ecx
cmp dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], ecx
jle 0x438039
mov dword [esp + 0x28], ecx
mov eax, 1
xor edx, edx
call fcn.0047acb0
mov ebp, edx
mov ebx, eax
and eax, dword [esp + 0x18]
mov ecx, ebp
and ecx, dword [esp + 0x1c]
or eax, ecx
jne 0x43801b
mov ecx, dword [esp + 0x98]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x28]
mov eax, dword [eax + edx]
call fcn.0040b820
mov edi, eax
cmp byte [edi], 0x9a
jne 0x43801b
mov ecx, dword [esp + 0x30]
cmp dword [edi + 0x1c], ecx
jne 0x43801b
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
movsx ecx, word [edi + 0x20]
push 0
not eax
push 0x182
not edx
push eax
mov eax, dword [esp + 0x3c]
push edx
mov edx, dword [esp + 0xa4]
add edx, 0x148
call fcn.00435980
mov esi, eax
add esp, 0x10
test esi, esi
je 0x43801b
test byte [esi + 0x12], 0x82
je 0x438013
cmp word [edi + 0x20], 0
jl 0x438013
mov ecx, dword [esp + 0x98]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x94]
mov ecx, dword [eax]
mov eax, dword [esp + 0x28]
push ecx
mov ecx, dword [eax + edx]
call fcn.0042bb90
add esp, 4
test eax, eax
jne 0x437fe5
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x94]
mov edi, dword [eax]
mov eax, dword [edx]
mov ecx, dword [esi]
push eax
call fcn.0042bb90
add esp, 4
test eax, eax
jne 0x438006
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 8]
mov eax, dword [eax]
mov ecx, edi
call fcn.0040e150
test eax, eax
jne 0x43801b
or dword [esp + 0x18], ebx
or dword [esp + 0x1c], ebp
mov ecx, dword [esp + 0x24]
add dword [esp + 0x28], 0x18
add ecx, 1
cmp ecx, dword [esp + 0x34]
mov dword [esp + 0x24], ecx
jl 0x437f22
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x24]
test eax, 0x1000
jne 0x4382e8
test eax, 0x100
je 0x43805d
xor edi, edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x54], edi
lea eax, [edi + 1]
jmp 0x438091
mov edx, dword [esp + 0x2c]
mov ecx, dword [edx + 0x1c]
test ecx, ecx
mov dword [esp + 0x24], ecx
je 0x437e3b
test byte [ecx + 0x34], 4
jne 0x437e3b
movzx eax, word [ecx + 0x2e]
cmp byte [ecx + 0x32], 0
mov dword [esp + 0x54], eax
movzx eax, word [ecx + 0x30]
setne byte [esp + 0x16]
mov edi, ecx
movzx esi, ax
xor edx, edx
test esi, esi
mov byte [esp + 0x21], 0
mov byte [esp + 0x22], 0
mov byte [esp + 0x23], 0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x64], esi
jle 0x4382e8
mov eax, dword [esp + 0x2c]
movzx ecx, word [eax + 0x18]
cmp edx, ecx
jge 0x4380ee
cmp word [eax + 0x2a], 0
jne 0x4380ee
mov eax, dword [eax + 0x30]
mov eax, dword [eax + edx*4]
movzx eax, word [eax + 0x12]
test eax, 0x182
je 0x4380ee
test eax, 0x100
je 0x4382d4
mov byte [esp + 0x16], 0
jmp 0x4382d4
test edi, edi
je 0x438114
mov eax, dword [edi + 4]
movsx esi, word [eax + edx*2]
mov eax, dword [edi + 0x1c]
mov al, byte [edx + eax]
mov byte [esp + 0x17], al
mov eax, dword [edi + 0xc]
movsx eax, word [eax + 0x1c]
cmp esi, eax
mov dword [esp + 0x28], esi
jne 0x438120
jmp 0x438119
mov byte [esp + 0x17], 0
or esi, 0xffffffff
mov dword [esp + 0x28], esi
cmp byte [esp + 0x16], 0
je 0x438144
test esi, esi
jl 0x438144
cmp edx, ecx
jl 0x438144
mov ecx, dword [edi + 0xc]
mov eax, dword [ecx + 4]
lea edx, [esi + esi*2]
cmp byte [eax + edx*8 + 0x14], 0
jne 0x438144
mov byte [esp + 0x16], 0
mov ebp, dword [esp + 0x98]
xor esi, esi
mov bl, 1
xor edi, edi
cmp esi, dword [esp + 0x34]
jge 0x43821c
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.0047acb0
and eax, dword [esp + 0x18]
and edx, dword [esp + 0x1c]
or eax, edx
jne 0x43820e
mov ecx, dword [ebp + 4]
mov ecx, dword [edi + ecx]
mov eax, ecx
test eax, eax
je 0x4381a9
mov edx, dword [eax + 4]
test edx, 0x1000
je 0x4381a9
test edx, 0x40000
je 0x4381a2
mov edx, dword [eax + 0x14]
mov eax, dword [edx + 4]
mov eax, dword [eax]
jmp 0x4381a5
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x438185
test dword [esp + 0xa0], 0x300
jne 0x4381b8
xor bl, bl
cmp byte [eax], 0x9a
jne 0x43820e
mov edx, dword [esp + 0x30]
cmp dword [eax + 0x1c], edx
jne 0x43820e
movsx edx, word [eax + 0x20]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x43820e
test eax, eax
jl 0x438247
mov eax, dword [esp + 0x94]
mov edx, dword [eax]
push edx
call fcn.0042bb90
mov ecx, eax
add esp, 4
test ecx, ecx
jne 0x4381f5
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x20]
mov edx, dword [esp + 0x3c]
mov eax, dword [eax + edx*4]
mov ecx, dword [ecx]
call fcn.0040e150
test eax, eax
je 0x438247
add esi, 1
add edi, 0x18
test bl, bl
jne 0x438151
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x43822d
movzx edx, word [esp + 0x54]
cmp eax, edx
jge 0x438232
mov byte [esp + 0x16], 0
cmp byte [esp + 0x23], 0
je 0x4382e8
mov byte [esp + 0x16], 1
jmp 0x4382f3
test dword [esp + 0xa0], 0x100
jne 0x4382a6
cmp byte [esp + 0x21], 0
je 0x438271
mov al, byte [esp + 0x17]
xor al, byte [esp + 0x22]
mov edx, dword [ebp + 4]
lea ecx, [esi + esi*2]
cmp al, byte [edx + ecx*8 + 0xc]
jne 0x43821c
jmp 0x4382a6
mov ecx, dword [ebp + 4]
lea eax, [esi + esi*2]
mov al, byte [ecx + eax*8 + 0xc]
xor al, byte [esp + 0x17]
mov byte [esp + 0x22], al
je 0x4382a1
mov ecx, dword [esp + 0x38]
mov eax, 1
xor edx, edx
call fcn.0047acb0
mov ecx, dword [esp + 0xac]
or dword [ecx], eax
or dword [ecx + 4], edx
mov byte [esp + 0x21], 1
cmp dword [esp + 0x28], 0
jge 0x4382b2
mov byte [esp + 0x23], 1
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.0047acb0
or dword [esp + 0x18], eax
or dword [esp + 0x1c], edx
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x64]
add edx, 1
cmp edx, esi
mov dword [esp + 0x3c], edx
jl 0x4380b5
jmp 0x438232
cmp byte [esp + 0x16], 0
je 0x43840d
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 8]
or dword [esp + 0x48], ecx
mov edx, dword [eax + 0xc]
or dword [esp + 0x4c], edx
xor ecx, ecx
cmp dword [esp + 0x34], ecx
mov dword [esp + 0x24], ecx
jle 0x43840d
mov dword [esp + 0x30], ecx
mov eax, 1
xor edx, edx
call fcn.0047acb0
mov ecx, edx
mov ebx, eax
and eax, dword [esp + 0x18]
mov dword [esp + 0x8c], ecx
and ecx, dword [esp + 0x1c]
or eax, ecx
jne 0x4383f3
mov eax, dword [esp + 0x98]
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x30]
mov esi, dword [edx + ecx]
mov eax, dword [esp + 0x94]
add eax, 0x44
push esi
push eax
call fcn.0040f120
mov edi, eax
mov ebp, edx
mov ecx, edi
add esp, 8
or ecx, ebp
jne 0x4383d0
xor eax, eax
lea edx, [esp + 0x6c]
push esi
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
push edx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov byte [esp + 0x88], 1
mov dword [esp + 0x74], 0x40b620
mov dword [esp + 0x78], 0x40b610
mov dword [esp + 0x8c], eax
call fcn.00412ff0
add esp, 8
cmp byte [esp + 0x80], 0
je 0x4383f3
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
not eax
not ecx
and eax, edi
and ecx, ebp
or eax, ecx
jne 0x4383f3
mov eax, dword [esp + 0x8c]
or dword [esp + 0x18], ebx
or dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x24]
add dword [esp + 0x30], 0x18
add ecx, 1
cmp ecx, dword [esp + 0x34]
mov dword [esp + 0x24], ecx
jl 0x438319
add dword [esp + 0x38], 1
cmp byte [esp + 0x16], 0
jne 0x437e82
jmp 0x438425
cmp byte [edx + 0x1d], 0
jne 0x438439
mov ecx, dword [esp + 0x58]
cmp dword [esp + 0x18], ecx
jne 0x438448
mov edx, dword [esp + 0x5c]
cmp dword [esp + 0x1c], edx
jne 0x438448
mov al, byte [esp + 0x68]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret
cmp byte [esp + 0x16], 0
jne 0x4384ab
mov ebx, dword [esp + 0x34]
add ebx, 0xffffffff
test ebx, ebx
jle 0x437e3b
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov eax, 1
xor edx, edx
mov ecx, ebx
call fcn.0047acb0
add eax, 0xffffffff
adc edx, 0xffffffff
mov ecx, eax
mov esi, edx
and ecx, edi
and esi, ebp
cmp ecx, eax
jne 0x43848a
cmp esi, edx
je 0x43849e
sub ebx, 1
test ebx, ebx
jg 0x438466
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret
mov al, bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret
pop edi
pop esi
pop ebp
or al, 0xff
pop ebx
add esp, 0x80
ret