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

Disassembly:
sub esp, 0x68
push 2
push 0x400
mov dword [esp + 0x34], 0x400
call fcn.0040c6e0
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x12c]
push 0xc
push eax
call fcn.0040c6e0
xor ecx, ecx
add esp, 0x10
mov dword [esp + 0x28], eax
xor eax, eax
cmp dword [esi + 0x138], eax
sete cl
xor edx, edx
cmp dword [esi + 0xa8], eax
sete dl
xor ecx, edx
neg ecx
sbb ecx, ecx
and ecx, 0x100000
mov dword [esp + 0x48], ecx
cmp dword [esi + 0xb0], eax
je 0x4381c2
cmp dword [esi + 0x134], eax
je 0x4381a8
cmp dword [esi + 0xbc], eax
jne 0x43819e
cmp dword [esi + 0x2d78], eax
je 0x43819e
mov dword [esp + 0x18], eax
jmp 0x4381b0
mov dword [esp + 0x18], 0x40000000
jmp 0x4381b0
mov dword [esp + 0x18], 0x20000000
cmp dword [esi + 0x8c], eax
je 0x4381c6
or dword [esp + 0x18], 0x10000000
jmp 0x4381c6
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x6c]
push ebx
push ebp
push edi
push 0
mov edi, eax
sub edi, dword [esi + 0x10]
push 0x1271
push eax
push esi
mov dword [esp + 0x68], edi
call fcn.00437230
mov ebx, dword [esi + 0x70]
mov ebp, eax
push edi
push ebp
mov eax, esi
mov dword [esp + 0x54], ebx
call fcn.00437df0
add esp, 0x18
test eax, eax
je 0x438214
mov edx, dword [esi + 0x3ca4]
mov ecx, edi
shl ecx, 4
mov ecx, dword [edx + ecx + 8]
mov ebx, dword [ecx + ebx*4]
mov dword [esp + 0x3c], ebx
jmp 0x438217
mov eax, dword [ebp + 0x14]
test ebx, ebx
jle 0x43822c
lea edx, [ebx + ebx*2]
cmp dword [eax + edx*4], 0xdfff
jne 0x43822c
dec ebx
mov dword [esp + 0x3c], ebx
mov eax, ebp
call fcn.00436500
mov eax, dword [esi + 0x20]
mov edx, 0x3ffff
test eax, eax
jl 0x438294
mov ecx, dword [esp + 0x24]
cmp dword [esi + 0x24], ecx
jne 0x438251
cmp eax, edi
jne 0x438251
cmp dword [esi + 0x1c], ebx
je 0x438294
mov edi, dword [esi + 0x18]
mov eax, dword [edi + eax*4]
mov ecx, dword [esi + 0x1c]
mov eax, dword [eax + 0x14]
lea edi, [ecx + ecx*2]
lea eax, [eax + edi*4]
test ecx, ecx
jle 0x438272
cmp dword [eax], 0xdfff
jne 0x438272
or dword [eax - 8], edx
mov ecx, dword [esi + 0x12c]
dec ecx
cmp dword [esi + 0x1c], ecx
jge 0x43828a
cmp dword [eax + 0xc], 0xdfff
jne 0x43828a
or dword [eax + 0x10], edx
or dword [eax + 4], edx
mov dword [esi + 0x24], 0
or eax, 0xffffffff
cmp dword [esi + 0x128], 0
mov dword [esi + 0x20], eax
mov dword [esi + 0x1c], eax
mov dword [esp + 0xc], 0
jle 0x438b49
mov eax, dword [esi + 0x10]
mov ebp, dword [esp + 0xc]
xor ebx, ebx
push ebx
add eax, ebp
push 0x12b1
push eax
push esi
mov dword [esp + 0x30], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x7c], eax
call fcn.00437230
mov edi, eax
push ebp
push edi
mov eax, esi
mov dword [esp + 0x48], edi
call fcn.00437df0
add esp, 0x18
mov dword [esp + 0x48], eax
cmp eax, ebx
je 0x43830f
mov edx, dword [esi + 0x3ca4]
shl ebp, 4
mov ecx, dword [edx + ebp + 0xc]
mov dword [esp + 0x44], ecx
jmp 0x43831a
mov eax, dword [edi + 0x14]
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], ebx
cmp dword [esi + 0x12c], ebx
mov dword [esp + 0x10], ebx
jle 0x4385a0
mov ebp, dword [esp + 0x34]
add ebp, 8
add eax, 0xc
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], eax
lea esp, [esp]
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
test eax, eax
je 0x438351
mov edx, dword [eax + edi*4]
jmp 0x438353
mov edx, edi
cmp dword [esi + 0x31b4], 0
mov eax, dword [esp + 0x28]
mov ebx, dword [eax - 0xc]
mov ecx, dword [eax - 8]
jne 0x438372
and ecx, 0xfffe0500
or ecx, 0x20500
cmp dword [esi + 0x31b8], 0
jne 0x4383b8
mov eax, ecx
and eax, 0x1ff
add eax, 0xfffffff0
cmp eax, 0xef
ja 0x438398
and ecx, 0xffffff00
or ecx, 0x100
mov eax, ecx
shr eax, 9
and eax, 0x1ff
add eax, 0xfffffff0
cmp eax, 0xef
ja 0x4383b8
and ecx, 0xfffe05ff
or ecx, 0x20400
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xd800
je 0x4383fd
cmp eax, 0xd900
je 0x4383e7
cmp eax, 0xda00
jne 0x438411
mov eax, dword [esi + 0x108c]
and ebx, 0xff
movzx ebx, word [eax + ebx*2 + 0x10]
jmp 0x438411
mov eax, dword [esi + 0x108c]
and ebx, 0xff
movzx ebx, word [eax + ebx*2 + 0x610]
jmp 0x438411
mov eax, dword [esi + 0x108c]
and ebx, 0xff
movzx ebx, word [eax + ebx*2 + 0x210]
mov eax, dword [esi + 0x12c]
dec eax
cmp edi, eax
jge 0x43842e
mov eax, dword [esp + 0x28]
cmp dword [eax], 0xdfff
jne 0x43842e
or ecx, 0x400000
mov eax, dword [esi + 0xe3c]
cmp eax, 2
je 0x43843e
cmp eax, 3
jne 0x438477
cmp dword [esi + 0xe40], 0
jne 0x4384ef
mov eax, dword [esi + 0xe48]
mov edi, dword [esp + 0x6c]
cmp eax, edi
jl 0x438463
jne 0x438477
cmp dword [esi + 0xe4c], edx
jg 0x438477
mov eax, dword [esi + 0xe50]
cmp edi, eax
jl 0x438523
je 0x438517
xor eax, eax
neg eax
sbb eax, eax
and eax, 0x100000
xor eax, ecx
xor eax, dword [esp + 0x54]
cmp dword [esi + 0xc4], 0
mov edi, eax
je 0x4384c0
test edi, 0x200000
je 0x4384c0
cmp dword [esi + 0x134], 0
je 0x4384ba
cmp dword [esi + 0xc0], 0
je 0x4384ba
mov ecx, dword [esi + 0x108c]
movzx ebx, word [ecx + 0x250]
and edi, 0xffdfffff
mov edx, dword [esi + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, dword [edx + eax*4]
mov edx, dword [ecx + 0x14]
mov eax, dword [esp + 0x18]
add eax, edx
cmp ebx, dword [eax]
jne 0x43852d
mov eax, dword [eax + 4]
mov ecx, eax
and ecx, 0xf7fffff
cmp edi, ecx
jne 0x43852d
test eax, 0x800000
je 0x43854e
jmp 0x438548
mov eax, dword [esp + 0x6c]
cmp dword [esi + 0xe48], eax
jg 0x438477
cmp dword [esi + 0xe4c], edx
jg 0x438477
cmp eax, dword [esi + 0xe50]
jg 0x438477
cmp edx, dword [esi + 0xe54]
jge 0x438477
mov eax, 1
jmp 0x438479
test edi, 0x400000
jne 0x43854e
mov edx, dword [esp + 0x78]
push ebx
push edx
call fcn.00447e50
add esp, 8
cmp eax, 2
jne 0x43854e
or edi, 0x800000
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
cmp edx, dword [esp + 0x58]
jne 0x438571
cmp eax, dword [esp + 0x3c]
jne 0x438571
mov ecx, dword [esp + 0x24]
or edi, ecx
mov dword [esi + 0x24], ecx
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], edx
mov ecx, 0xc
add dword [esp + 0x18], ecx
add dword [esp + 0x28], ecx
mov dword [ebp - 4], edi
mov dword [ebp - 8], ebx
mov dword [ebp], 0
inc eax
add ebp, ecx
cmp eax, dword [esi + 0x12c]
mov dword [esp + 0x10], eax
jl 0x438340
xor ebx, ebx
xor edx, edx
cmp dword [esi + 0x12c], ebx
mov dword [esp + 0x44], ebx
jle 0x438665
mov ebp, dword [esp + 0x34]
xor edi, edi
mov dword [esp + 0x28], edi
lea esp, [esp]
mov ecx, dword [esp + 0xc]
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + edi + 4]
add ecx, edi
test eax, eax
jns 0x4385e1
mov dword [esp + 0x44], ebx
mov dword [esp + 0x28], edi
xor edx, edx
mov ecx, dword [ecx]
cmp ecx, dword [edi + ebp]
jne 0x4385f3
and eax, 0xfffffff
cmp eax, dword [edi + ebp + 4]
je 0x438638
test edx, edx
jne 0x43863c
mov eax, dword [esp + 0x44]
cmp eax, ebx
jge 0x438631
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0xc]
mov edx, ebx
sub edx, eax
jmp 0x438610
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ebp*4]
mov eax, dword [eax + 0x14]
or dword [eax + ecx + 4], 0x3ffff
lea eax, [eax + ecx + 4]
add ecx, 0xc
sub edx, 1
jne 0x438610
mov ebp, dword [esp + 0x34]
mov edx, 1
jmp 0x43863c
test edx, edx
je 0x438655
mov ecx, dword [esi + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ecx + 0x14]
or dword [eax + edi + 4], 0x3ffff
lea eax, [eax + edi + 4]
inc ebx
add edi, 0xc
cmp ebx, dword [esi + 0x12c]
jl 0x4385c0
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0xc]
mov eax, dword [ecx + edx*4]
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx]
xor edx, edx
cmp cx, word [eax]
mov word [eax], cx
setne dl
cmp dword [esi + 0x12c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x44], edx
mov dword [esp + 0x28], edx
jle 0x438ac5
mov edx, dword [esp + 0x48]
xor ebx, ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x18], edx
lea esp, [esp]
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x34]
mov ebp, dword [ebx + eax + 4]
mov edi, dword [ebx + eax]
mov eax, dword [ecx + edx*4]
mov ecx, dword [eax + 0x14]
mov edx, dword [ecx + ebx + 4]
lea eax, [ecx + ebx]
mov dword [esp + 0x48], eax
mov eax, edx
xor eax, ebp
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], edi
test eax, 0x400000
je 0x4386f6
mov dword [esp + 0x44], 1
mov eax, ebp
xor eax, dword [esp + 0x20]
and eax, dword [esi + 0x1060]
neg eax
sbb eax, eax
neg eax
cmp edi, 0x23ba
jb 0x438718
cmp edi, 0x23bd
jbe 0x438737
cmp dword [esp + 0x10], 0
jle 0x43873c
mov ecx, dword [esp + 0x34]
mov ecx, dword [ebx + ecx - 0xc]
cmp ecx, 0x23ba
jb 0x43873c
cmp ecx, 0x23bd
ja 0x43873c
mov eax, 1
mov ecx, edi
and ecx, 0xfffffc00
mov dword [esp + 0x5c], ecx
cmp ecx, 0xd800
je 0x438764
mov ecx, edi
and ecx, 0xfffffe00
cmp ecx, 0xf000
je 0x438764
xor ecx, ecx
jmp 0x43876c
mov ecx, edi
and ecx, 0xffffff00
cmp ecx, dword [esp + 0x40]
je 0x438777
mov eax, 1
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 8], 0
jne 0x43878e
cmp dword [esp + 0x10], 0
jle 0x438793
cmp dword [ecx - 4], 0
je 0x438793
mov eax, 1
mov ecx, dword [esi + 0x108c]
cmp dword [ecx + 4], 0
jne 0x4387c6
cmp dword [esp + 0x44], 0
jne 0x4387c6
mov ecx, dword [esp + 0x48]
cmp dword [ecx], edi
jne 0x4387b8
and edx, 0xfffffff
cmp edx, ebp
je 0x4387ce
cmp dword [esp + 0x28], 0
jne 0x4387c6
cmp dword [esp + 0x14], 1
je 0x4387d5
test eax, eax
je 0x4388a7
cmp dword [esp + 0x28], 0
jne 0x4387dc
cmp dword [esp + 0x4c], 0
je 0x43884f
cmp dword [esp + 0x14], 0
jle 0x43884f
mov edx, dword [esp + 0x30]
movzx eax, word [edx]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x88]
push ecx
push edx
push eax
call fcn.00447ba0
add esp, 0x1c
test dword [esp + 0x20], 0x60000000
je 0x43884f
mov ecx, dword [esp + 0x30]
movzx edx, word [ecx]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x88]
push eax
push ecx
push edx
call fcn.00447c20
add esp, 0x1c
mov eax, dword [esp + 0x10]
xor ecx, ecx
cmp dword [esp + 0x5c], 0xd800
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebp
je 0x438881
mov edx, edi
and edx, 0xfffffe00
cmp edx, 0xf000
je 0x438881
mov dword [esp + 0x40], ecx
jmp 0x43888c
mov eax, edi
and eax, 0xffffff00
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x108c]
cmp dword [eax + 4], ecx
je 0x43889f
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x4c], ecx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x28], edx
mov eax, dword [esi + 0x18]
mov ecx, dword [esp + 0xc]
mov edx, dword [eax + ecx*4]
mov eax, dword [edx + 0x14]
mov edx, dword [esp + 0x18]
push ebp
push edi
add eax, ebx
mov dword [esp + 0x50], 0
call fcn.00436660
add esp, 8
test eax, eax
jne 0x4388dd
mov eax, 1
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x38]
jl 0x438904
mov ecx, dword [esp + 0x1c]
add eax, 0x100
push 2
push eax
push ecx
mov dword [esp + 0x44], eax
call fcn.0040c790
add esp, 0xc
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov word [edx + eax*2], di
inc eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
cmp dword [eax + 8], 0
je 0x4389e3
mov ecx, dword [esp + 0x14]
mov ebx, eax
lea ebp, [ecx + 0x100]
nop
mov eax, dword [ebx + 8]
lea edx, [eax + eax*2]
mov edi, dword [ebx + edx*4]
lea ebx, [ebx + edx*4]
mov eax, edi
and eax, 0xffffff00
cmp eax, 0xd800
je 0x438981
cmp eax, 0xd900
je 0x43896b
cmp eax, 0xda00
jne 0x438995
mov eax, dword [esi + 0x108c]
and edi, 0xff
movzx edi, word [eax + edi*2 + 0x10]
jmp 0x438995
mov edx, dword [esi + 0x108c]
and edi, 0xff
movzx edi, word [edx + edi*2 + 0x610]
jmp 0x438995
mov eax, dword [esi + 0x108c]
and edi, 0xff
movzx edi, word [eax + edi*2 + 0x210]
cmp ecx, dword [esp + 0x38]
jl 0x4389b7
mov ecx, dword [esp + 0x1c]
push 2
push ebp
push ecx
mov dword [esp + 0x44], ebp
call fcn.0040c790
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x1c]
mov word [edx + ecx*2], di
inc ecx
inc ebp
cmp dword [ebx + 8], 0
mov dword [esp + 0x14], ecx
jne 0x438930
or dword [esp + 0x20], 0x80000000
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x50]
cmp dword [esp + 0x48], 0
je 0x438a45
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0xc]
mov ecx, dword [ecx + edx*4]
push eax
mov eax, dword [esp + 0x1c]
call fcn.004366e0
mov ecx, dword [esi + 0x18]
mov eax, dword [esp + 0x10]
mov edx, dword [ecx + eax*4]
mov ecx, dword [edx + 0x14]
mov dword [ebx + ecx], edi
mov edx, dword [esi + 0x18]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x14]
mov ecx, dword [eax + 0x14]
add esp, 4
mov dword [ecx + ebx + 4], ebp
cmp dword [esp + 0x2c], edx
jne 0x438a45
mov eax, dword [esi + 0x18]
mov ecx, dword [esp + 0xc]
mov edx, dword [eax + ecx*4]
mov eax, dword [edx + 0x14]
or dword [eax + ebx + 4], 0x80000000
lea eax, [eax + ebx + 4]
test ebp, 0x400000
je 0x438aa4
mov eax, dword [esp + 0x10]
add dword [esp + 0x18], 0xc
inc eax
add ebx, 0xc
cmp eax, dword [esi + 0x12c]
mov dword [esp + 0x10], eax
jge 0x438aa4
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0xc]
mov edi, dword [ecx + edx*4]
mov ebp, dword [esp + 0x68]
mov eax, dword [edi + 0x14]
add eax, ebx
add ebp, 0xc
push eax
mov edx, ebp
call fcn.004366c0
add esp, 4
test eax, eax
jne 0x438a93
mov dword [esp + 0x28], 1
mov ecx, dword [esp + 0x10]
push ecx
mov eax, ebp
mov ecx, edi
call fcn.004366e0
add esp, 4
mov eax, dword [esp + 0x10]
add dword [esp + 0x18], 0xc
inc eax
add ebx, 0xc
cmp eax, dword [esi + 0x12c]
mov dword [esp + 0x10], eax
mov dword [esp + 0x50], ebx
jl 0x4386b0
cmp dword [esp + 0x28], 0
je 0x438b2b
cmp dword [esp + 0x14], 0
jle 0x438b2b
mov edx, dword [esp + 0x30]
movzx eax, word [edx]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x7c]
push edi
push ebp
push ecx
push ebx
push edx
push eax
call fcn.00447ba0
add esp, 0x1c
test edi, 0x60000000
je 0x438b2b
mov ecx, dword [esp + 0x30]
movzx edx, word [ecx]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [esp + 0x7c]
push edi
push ebp
push eax
push ebx
push ecx
push edx
call fcn.00447c20
add esp, 0x1c
mov eax, dword [esp + 0x30]
call fcn.00436500
mov eax, dword [esp + 0xc]
inc eax
cmp eax, dword [esi + 0x128]
mov dword [esp + 0xc], eax
jl 0x4382b2
mov eax, dword [esp + 0x34]
push eax
call fcn.0040c850
mov ecx, dword [esp + 0x20]
add esp, 4
pop edi
pop ebp
pop ebx
add esp, 0x68
mov dword [esp + 4], ecx
jmp fcn.0040c850