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

Disassembly:
sub esp, 0x5c
push ebx
push ebp
mov ebp, ecx
mov edx, 1
push esi
mov esi, dword [esp + 0x70]
push edi
mov ebx, dword [ebp + 8]
xor edi, edi
mov eax, dword [ebp + 4]
and ebx, 0x80000000
mov dword [esp + 0x48], ebp
mov dword [esp + 0x58], edx
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x4c], eax
test esi, esi
jne 0x10037697
test eax, eax
je 0x10037aec
mov edi, edx
jmp 0x10037aec
test eax, eax
jne 0x100376a7
test esi, esi
je 0x100376a7
or edi, 0xffffffff
jmp 0x10037aec
lea ecx, [esp + 0x58]
push ecx
push eax
mov ecx, 0x10051c08
call fcn.100385d0
test byte [esp + 0x58], 8
mov dword [esp + 0x28], eax
jne 0x100376f6
push 0
push 0
lea ecx, [esp + 0x54]
push ecx
push eax
mov eax, dword [ebp + 4]
shr eax, 1
push eax
push dword [ebp]
movzx eax, word [ebp + 0xc]
push 0
push eax
call fcn.10043020
test eax, eax
jns 0x100376f6
push 1
push eax
lea ecx, [esp + 0x60]
call fcn.1001c1e0
jmp case.default.0x10037ab1
lea eax, [esp + 0x58]
mov ecx, 0x10051c08
push eax
push dword [esp + 0x3c]
call fcn.100385d0
test byte [esp + 0x58], 8
mov dword [esp + 0x34], eax
jne case.default.0x10037ab1
push 0
push 0
lea ecx, [esp + 0x40]
shr esi, 1
push ecx
push eax
movzx eax, word [ebp + 0xc]
push esi
push dword [esp + 0x84]
push 0
push eax
call fcn.10043020
test eax, eax
js case.default.0x10037ab1
mov edx, dword [ebp + 8]
cmp edx, 0x100
jle 0x100377b8
mov ecx, dword [ebp + 4]
add ebx, 0x30001
shr ecx, 1
test edx, 0xa0000000
jne 0x1003778e
test ecx, ecx
jle 0x10037771
mov eax, dword [ebp]
cmp byte [eax + ecx - 1], 0x20
jne 0x10037771
dec ecx
test ecx, ecx
jg 0x10037765
mov eax, dword [esp + 0x70]
test esi, esi
jle 0x10037792
lea esp, [esp]
cmp byte [eax + esi - 1], 0x20
jne 0x10037792
dec esi
test esi, esi
jg 0x10037780
jmp 0x10037792
mov eax, dword [esp + 0x70]
push esi
push eax
push ecx
push dword [ebp]
and edx, 0xfffeff
push ebx
push edx
call sub.mswstr10.dll_Ordinal_1
test eax, eax
je 0x100377b1
lea edi, [eax - 2]
jmp case.default.0x10037ab1
xor edi, edi
jmp case.default.0x10037ab1
cmp dword [esp + 0x78], 1
mov eax, dword [edx*4 + 0x100500e0]
mov esi, dword [esp + 0x4c]
mov ecx, esi
mov ebx, dword [esp + 0x38]
mov edx, ebx
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x44], esi
mov dword [esp + 0x24], eax
je 0x1003780c
test esi, esi
je 0x100377fe
mov esi, ebp
lea esp, [esp]
cmp byte [esi + ecx - 1], 0x20
jne 0x100377fa
dec ecx
jne 0x100377f0
mov esi, dword [esp + 0x44]
test ebx, ebx
je 0x1003780c
cmp byte [eax + edx - 1], 0x20
jne 0x1003780c
dec edx
jne 0x10037802
test ecx, ecx
je 0x10037855
test edx, edx
je 0x10037855
mov edi, dword [esp + 0x1c]
movzx eax, byte [ebp]
mov al, byte [eax + edi]
mov edi, 0
mov byte [esp + 0x16], al
cmp al, 0xff
je 0x10037855
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
movzx eax, byte [eax]
mov al, byte [eax + esi]
mov esi, dword [esp + 0x44]
cmp al, 0xff
je 0x10037855
cmp byte [esp + 0x16], al
jne 0x100378f9
inc dword [esp + 0x24]
inc ebp
dec edx
dec ecx
jne 0x10037810
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x17]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], ebp
push dword [eax + 8]
call fcn.10032270
cmp dword [esp + 0x78], 1
mov dword [esp + 0x54], eax
je 0x100378a0
test esi, esi
je 0x10037892
mov eax, dword [esp + 0x28]
cmp byte [eax + esi - 1], 0x20
jne 0x10037892
dec esi
jne 0x10037888
test ebx, ebx
je 0x100378a0
cmp byte [ebx + ebp - 1], 0x20
jne 0x100378a0
dec ebx
jne 0x10037896
xor edx, edx
mov dword [esp + 0x44], 1
xor ebp, ebp
mov dword [esp + 0x30], edx
xor ecx, ecx
mov dword [esp + 0x2c], ebp
xor eax, eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x40], eax
test esi, esi
jne 0x100378d0
test ebp, ebp
je 0x10037aa8
test ebx, ebx
jne 0x100378dc
test ecx, ecx
je 0x10037aa8
test ebp, ebp
je 0x10037919
mov ah, byte [edx]
mov al, byte [edx + 1]
add edx, 2
dec ebp
mov dword [esp + 0x30], edx
mov byte [esp + 0x13], ah
mov dh, ah
mov dword [esp + 0x2c], ebp
jmp 0x1003793a
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
movzx ecx, byte [eax]
movzx eax, byte [ebp]
mov al, byte [eax + edx]
cmp al, byte [ecx + edx]
sbb edi, edi
and edi, 0xfffffffe
inc edi
jmp case.default.0x10037ab1
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx eax, byte [eax]
mov dh, byte [eax + edx]
mov al, byte [eax + ecx + 0x100]
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x13], dh
mov byte [esp + 0x15], al
test ecx, ecx
je 0x10037961
mov eax, dword [esp + 0x3c]
mov dl, byte [eax]
mov byte [esp + 0x16], dl
mov dl, byte [eax + 1]
add eax, 2
dec ecx
mov byte [esp + 0x14], dl
mov dword [esp + 0x3c], eax
mov dword [esp + 0x18], ecx
jmp 0x10037982
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
movzx eax, byte [eax]
mov dl, byte [eax + ecx]
mov al, byte [eax + ecx + 0x100]
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x16], dl
mov byte [esp + 0x14], al
cmp dh, 0xff
jne 0x100379f0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x54]
inc eax
mov dword [esp + 0x30], eax
lea eax, [esi - 1]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x2c]
push eax
movzx eax, byte [esp + 0x19]
push dword [ecx + eax*4]
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.10038130
mov ebp, dword [esp + 0x2c]
mov edx, eax
mov eax, dword [esp + 0x30]
dec ebp
mov esi, dword [esp + 0x50]
dec eax
mov dword [esp + 0x20], eax
inc esi
mov al, byte [edx]
mov cl, byte [edx + 1]
add edx, 2
mov byte [esp + 0x13], al
mov byte [esp + 0x15], cl
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ebp
test al, al
je 0x10037b1c
mov ecx, dword [esp + 0x18]
mov al, byte [esp + 0x16]
cmp al, 0xff
jne 0x10037a59
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x54]
inc eax
mov dword [esp + 0x50], eax
lea eax, [ebx - 1]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x18]
push eax
movzx eax, byte [esp + 0x18]
push dword [ecx + eax*4]
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x5c]
push eax
call fcn.10038130
mov ebx, dword [esp + 0x3c]
mov edx, eax
mov eax, dword [esp + 0x50]
inc ebx
dec eax
mov dword [esp + 0x24], eax
mov cl, byte [edx + 1]
mov al, byte [edx]
add edx, 2
mov byte [esp + 0x14], cl
mov ecx, dword [esp + 0x18]
dec ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], ecx
test al, al
je 0x10037b1c
mov ah, byte [esp + 0x13]
cmp ah, al
jb 0x10037ac9
ja 0x10037b31
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x10037a89
mov dl, byte [esp + 0x14]
mov dh, byte [esp + 0x15]
cmp dh, dl
jae 0x10037a80
or eax, 0xffffffff
jmp 0x10037a85
cmova eax, dword [esp + 0x44]
mov dword [esp + 0x40], eax
test ebp, ebp
jne 0x10037a92
inc dword [esp + 0x20]
dec esi
mov edx, dword [esp + 0x30]
test ecx, ecx
jne 0x100378c4
inc dword [esp + 0x24]
dec ebx
jmp 0x100378c4
mov ecx, dword [esp + 0x78]
cmp ecx, 3
ja case.default.0x10037ab1
jmp dword [ecx*4 + 0x10037b38]
cmp esi, ebx
jb 0x10037ac9
mov edi, eax
cmova edi, dword [esp + 0x44]
jmp case.default.0x10037ab1
cmp ebx, esi
jbe 0x10037b16
or edi, 0xffffffff
push dword [esp + 0x28]
mov ecx, 0x10051c08
call fcn.10038d20
push dword [esp + 0x34]
mov ecx, 0x10051c08
call fcn.10038d20
mov edx, dword [esp + 0x58]
test edx, 0xfffffffe
je 0x10037afd
lea ecx, [esp + 0x58]
call fcn.1001c060
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0xc
mov edi, dword [esp + 0x44]
cmp esi, ebx
cmovbe edi, eax
jmp case.default.0x10037ab1
cmp ebx, esi
sbb edi, edi
neg edi
jmp case.default.0x10037ab1
push dword [esp + 0x74]
mov ecx, dword [esp + 0x4c]
push dword [esp + 0x74]
call fcn.10037510
mov edi, eax
jmp case.default.0x10037ab1
mov edi, 1
jmp case.default.0x10037ab1