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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xcc
mov eax, dword [0x4ea5e0]
xor eax, esp
mov dword [esp + 0xc8], eax
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [ebp + 0x14]
push edi
mov edi, ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x14], edx
mov edx, dword [esi]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x48], ecx
mov ecx, dword [esi + 8]
sub ecx, edx
mov dword [esp + 0x44], edx
mov edx, dword [esi + 0xc]
sub edx, eax
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x64]
lea ebx, [eax*8]
sub ebx, eax
movzx eax, byte [edi + 0x20]
shr eax, 3
mov dword [esp + 0x20], ebx
mov ebx, eax
mov eax, dword [esp + 0x20]
imul ebx, dword [eax*8 + 0x4d4a28]
mov dword [esp + 0x60], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
cmp dword [edi + 0x1988], ebx
jge 0x43728d
mov eax, dword [edi + 0x1984]
test eax, eax
je 0x43721e
push eax
call fcn.004a9011
add esp, 4
lea ecx, [ebx + 1]
push ecx
call fcn.004a8a24
add esp, 4
mov dword [edi + 0x1984], eax
test eax, eax
jne 0x43727f
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp + 0x70], edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x70]
push eax
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x14]
push ecx
push edx
mov ecx, edi
call fcn.004355d0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc8]
xor ecx, esp
call fcn.004a8a2f
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov dword [edi + 0x1988], ebx
cmp byte [edi + 0x21], 0x18
jne 0x4372b3
mov eax, 0xff
cmp word [edi + 0x24], ax
jne 0x4372b3
cmp word [edi + 0x26], ax
jne 0x4372b3
cmp word [edi + 0x28], ax
jne 0x4372b3
mov byte [edi + 0x1990], 1
jmp 0x4372ba
mov byte [edi + 0x1990], 0
cmp dword [edi + 0x6c], 0
je 0x4378a7
mov ebx, edx
imul ebx, ecx
cmp ebx, 0x1000
jl 0x4378a7
mov eax, dword [edi + 0x64]
lea edx, [eax*8]
sub edx, eax
add edx, edx
add edx, edx
mov eax, dword [edx + edx + 0x4d4a28]
add edx, edx
mov edx, dword [edx + 0x4d4a2c]
cmp ecx, edx
jle 0x4372fa
mov ecx, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x2c]
add edx, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x68], eax
cmp ecx, edx
jge 0x437583
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
add edx, ecx
imul eax, ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x58], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x68]
mov ecx, edx
sub ecx, eax
cmp ecx, ebx
jl 0x4373a1
mov edx, dword [esp + 0x38]
lea esi, [ebx + eax]
push esi
push edx
push eax
mov eax, dword [esp + 0x50]
push eax
lea ecx, [esp + 0x90]
push ecx
call dword [sym.imp.USER32.dll_SetRect]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x48]
push edx
push eax
push edi
lea eax, [esp + 0x8c]
call fcn.00438160
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [esp + 0x14]
call fcn.00460a30
mov ecx, dword [esp + 0x58]
sub dword [esp + 0x2c], ebx
sub dword [esp + 0x3c], ecx
mov edx, dword [esp + 0x30]
mov eax, esi
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x2c]
add ecx, eax
lea esi, [edx + 0x10]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x6c], esi
cmp esi, ecx
jg 0x4373c0
mov dword [esp + 0x34], 0x10
jmp 0x4373cc
mov ecx, dword [esp + 0x2c]
sub ecx, edx
add ecx, eax
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x38]
jge 0x43756d
mov edx, dword [esp + 0x28]
mov dword [esp + 0x54], edx
lea eax, [ebx + 0x10]
mov dword [esp + 0x64], eax
mov edx, 0x10
cmp eax, dword [esp + 0x38]
jle 0x4373fc
mov edx, dword [esp + 0x54]
mov al, byte [edi + 0x10]
mov dword [esp + 0xc], edx
cmp al, 0x10
je 0x4374b7
cmp al, 0x20
je 0x437463
mov eax, dword [edi + 0x40]
imul eax, dword [esp + 0x30]
add eax, dword [esp + 0x10]
mov cl, byte [eax + ebx]
add eax, ebx
xor esi, esi
mov byte [esp + 0x1f], cl
cmp dword [esp + 0x34], esi
jle 0x437452
lea esp, [esp]
xor ecx, ecx
test edx, edx
jle 0x437448
mov dl, byte [esp + 0x1f]
cmp dl, byte [ecx + eax]
jne 0x43745c
mov edx, dword [esp + 0xc]
inc ecx
cmp ecx, edx
jl 0x437436
add eax, dword [edi + 0x40]
inc esi
cmp esi, dword [esp + 0x34]
jl 0x437430
movzx eax, byte [esp + 0x1f]
jmp 0x437508
xor al, al
jmp 0x43750e
mov esi, dword [edi + 0x40]
mov ecx, esi
imul ecx, dword [esp + 0x30]
add ecx, dword [esp + 0x10]
mov edx, dword [ecx + ebx*4]
lea ecx, [ecx + ebx*4]
mov dword [esp + 0x20], edx
xor edx, edx
cmp dword [esp + 0x34], edx
jle 0x4374b1
xor eax, eax
cmp dword [esp + 0xc], eax
jle 0x4374a4
jmp 0x437490
mov ebx, dword [esp + 0x20]
cmp ebx, dword [ecx + eax*4]
jne 0x437592
inc eax
cmp eax, dword [esp + 0xc]
jl 0x437490
inc edx
add ecx, esi
cmp edx, dword [esp + 0x34]
jl 0x437483
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
jmp 0x437508
mov esi, dword [edi + 0x40]
mov ecx, esi
imul ecx, dword [esp + 0x30]
add ecx, dword [esp + 0x10]
movzx edx, word [ecx + ebx*2]
lea ecx, [ecx + ebx*2]
mov dword [esp + 0x20], edx
xor edx, edx
cmp dword [esp + 0x34], edx
jle 0x437503
xor eax, eax
cmp dword [esp + 0xc], eax
jle 0x4374f6
mov bx, word [esp + 0x20]
cmp bx, word [ecx + eax*2]
jne 0x437592
inc eax
cmp eax, dword [esp + 0xc]
jl 0x4374e0
inc edx
add ecx, esi
cmp edx, dword [esp + 0x34]
jl 0x4374d8
mov ebx, dword [esp + 0x18]
movzx eax, word [esp + 0x20]
mov dword [esp + 0x24], eax
mov al, 1
test al, al
je 0x437556
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x4c]
push ecx
mov ecx, dword [esp + 0x34]
lea edx, [esp + 0x54]
push edx
mov edx, dword [esp + 0x5c]
push eax
mov eax, dword [esp + 0x38]
push ecx
sub eax, ecx
mov ecx, dword [esp + 0x20]
add eax, dword [esp + 0x50]
push ebx
push ecx
push edi
call fcn.004378e0
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x3c]
je 0x43759d
cmp eax, 0x800
jge 0x43759d
mov ebx, dword [esp + 0x64]
sub dword [esp + 0x54], 0x10
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x38]
jl 0x4373e6
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x30], eax
cmp eax, dword [esp + 0x5c]
jl 0x437330
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push eax
push ecx
jmp 0x4378b1
mov ebx, dword [esp + 0x18]
xor al, al
jmp 0x43750e
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x44]
lea eax, [esp + 0x4c]
push eax
mov dword [esp + 0x10], edx
lea ecx, [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x14]
push edx
mov edx, dword [esp + 0x38]
lea eax, [esp + 0x24]
push eax
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x24]
push edx
push eax
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x5c]
push ebx
push esi
push ecx
push edi
call fcn.00437c10
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x38]
push edx
push eax
push ebx
push esi
lea ecx, [esp + 0xa0]
push ecx
call dword [sym.imp.USER32.dll_SetRect]
mov esi, dword [esp + 0xc]
add esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x44]
mov ebx, dword [sym.imp.USER32.dll_SetRect]
push esi
push ecx
push edx
push eax
lea ecx, [esp + 0xb0]
push ecx
call ebx
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0xc]
push esi
push edx
mov edx, dword [esp + 0x20]
add edx, dword [esp + 0x58]
push eax
push edx
lea eax, [esp + 0xc0]
push eax
call ebx
mov ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x48]
push eax
push esi
push ecx
lea edx, [esp + 0xd0]
push edx
call ebx
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x24], 0
nop
cmp dword [esp + 0x24], 2
jne 0x437833
mov ebx, dword [esp + 0xc]
lea eax, [ebx + 1]
push eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + 1]
push ecx
push ebx
push eax
lea edx, [esp + 0x80]
push edx
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], ecx
mov ecx, dword [edi + 0x1984]
lea eax, [esp + 0x80]
push eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x8c], edx
mov edx, dword [edi]
mov edx, dword [edx + 0x14]
push ecx
push eax
mov ecx, edi
call edx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x18]
push eax
push ecx
mov ecx, ebx
mov eax, edi
call fcn.00438530
cmp byte [edi + 0x1990], 0
je 0x43771a
mov eax, dword [edi + 0x1984]
push 1
mov ecx, edi
call fcn.00439280
mov ebx, 3
jmp 0x437721
movzx ebx, byte [edi + 0x20]
shr ebx, 3
mov edx, dword [edi + 0x197c]
mov eax, dword [edi + 0x1980]
mov byte [edx + eax], 0x80
mov ecx, dword [edi + 0x1984]
mov edx, dword [esp + 0x14]
inc dword [edi + 0x1980]
push ebx
push ecx
push edx
call fcn.004b29a0
mov eax, dword [edi + 0x1980]
add esp, 0xc
cmp dword [esi + 8], 0xffffffff
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x197c]
je 0x43781d
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x4377ba
cmp byte [esi + 0x18], 0
je 0x4377b3
mov edx, dword [esi + 0x10]
cmp byte [edx + 0x21], 0
je 0x4377b3
cmp byte [esi + 0x68], 0
push ecx
push eax
je 0x43779d
mov edx, dword [esi + 0x64]
add edx, dword [esi + 0x6c]
push edx
call fcn.004b29a0
mov eax, dword [esp + 0x34]
add esp, 0xc
add dword [esi + 0x6c], eax
jmp 0x4377ba
push esi
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2c], 0
call fcn.00460e80
mov ecx, dword [esp + 0x20]
push ecx
push eax
call fcn.00460810
cmp dword [esi + 8], 0xffffffff
je 0x43781d
test ebx, ebx
je 0x43781d
cmp byte [esi + 0x18], 0
mov ecx, ebx
je 0x437812
mov edx, dword [esi + 0x10]
cmp byte [edx + 0x21], 0
je 0x437812
cmp byte [esi + 0x68], 0
push ebx
je 0x4377f5
mov ecx, dword [esi + 0x64]
mov eax, dword [esp + 0x18]
add ecx, dword [esi + 0x6c]
push eax
push ecx
call fcn.004b29a0
add esp, 0xc
add dword [esi + 0x6c], ebx
jmp 0x43781d
mov edx, dword [esp + 0x18]
push edx
push esi
lea ecx, [esp + 0x48]
mov dword [esp + 0x48], 0
call fcn.00460e80
mov ecx, dword [esp + 0x3c]
jmp 0x437816
mov eax, dword [esp + 0x14]
push ecx
push eax
call fcn.00460810
mov eax, dword [edi + 0x1980]
lea ecx, [eax + ebx - 0xc]
add dword [edi + 0x5c], ecx
add eax, ebx
add dword [edi + 0x60], eax
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
add eax, eax
mov edx, dword [esp + eax*8 + 0x90]
lea ecx, [esp + eax*8 + 0x90]
cmp edx, dword [esp + eax*8 + 0x98]
je 0x43787c
mov edx, dword [esp + eax*8 + 0x94]
cmp edx, dword [esp + eax*8 + 0x9c]
je 0x43787c
mov eax, dword [edi]
mov edx, dword [eax + 0x18]
push ecx
mov ecx, dword [esp + 0x14]
push ebx
push esi
push ecx
mov ecx, edi
call edx
mov ecx, eax
mov eax, ebx
mov edx, esi
call fcn.00460a30
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
cmp eax, 4
jl 0x437670
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc8]
xor ecx, esp
call fcn.004a8a2f
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edx
push eax
mov ecx, dword [esp + 0x50]
push edi
mov eax, esi
call fcn.00438160
mov ecx, dword [esp + 0xd4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004a8a2f
mov esp, ebp
pop ebp
ret 0x10