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

Disassembly:
sub esp, 0x6c
push ebx
push ebp
push esi
mov esi, dword [esp + 0x7c]
push edi
mov edi, dword [esi]
mov ebx, dword [esi + 0xd8]
mov dword [esp + 0x30], edi
mov edx, dword [edi + 0x2e0]
mov eax, edx
mov ebp, dword [edi + 0x24]
and eax, 0x400
and edx, 1
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], eax
test eax, eax
je 0x8389fd
mov ecx, 0x26
jmp 0x838a06
mov ecx, edx
neg ecx
sbb ecx, ecx
and ecx, 6
movzx eax, word [ebx + 0x18]
mov ebp, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x34], ebp
add ebp, 0xe
lea ebp, [eax + ebp*2]
mov dword [esp + 0x2c], ebp
movzx ecx, word [ecx + ebp]
mov ebp, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 0x38], ecx
mov cl, byte [ecx]
mov byte [esp + 0x13], cl
cmp cl, 4
je 0x83916b
cmp cl, 3
je 0x83916b
cmp dword [esp + 0x1c], 0
je 0x838a67
mov ecx, dword [esp + 0x14]
lea eax, [eax + ecx*2]
add eax, 0x1a
mov dword [esp + 0x24], eax
movzx ecx, word [eax + 0x26]
mov eax, 0x26
jmp 0x838a8e
mov ecx, dword [ebx + 8]
mov eax, edx
mov esi, dword [esp + 0x14]
neg eax
sbb eax, eax
and eax, 6
lea ecx, [ecx + esi*2]
add ecx, 0x1a
mov dword [esp + 0x24], ecx
movzx ecx, word [ecx + eax]
mov eax, edx
neg eax
sbb eax, eax
and eax, 6
mov esi, dword [esp + 0x2c]
movzx eax, word [esi + eax]
sub ecx, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x20], ecx
dec ecx
mov esi, dword [esp + 0x20]
add ecx, eax
add eax, 3
add esi, eax
cmp byte [esp + 0x13], 2
cmove esi, ecx
mov dword [esp + 0x2c], esi
mov eax, dword [ebx + 0x4c]
mov eax, dword [eax + 0x14]
shr eax, 2
cmp esi, eax
mov esi, dword [esp + 0x80]
jbe 0x838b26
cmp dword [esp + 0x20], 8
ja 0x83916b
cmp dword [esp + 0x1c], 0
je 0x838aeb
mov dword [esp + 0x28], 0x26
jmp 0x838af8
mov eax, edx
neg eax
sbb eax, eax
and eax, 6
mov dword [esp + 0x28], eax
mov ecx, dword [ebx + 8]
movzx eax, word [ecx + 0x14]
movzx ecx, word [ecx + 0x16]
add eax, eax
sub ecx, eax
mov eax, 8
sub ecx, dword [esp + 0x28]
sub eax, dword [esp + 0x20]
sub ecx, 0x1a
cmp eax, ecx
jbe 0x83916b
mov ecx, 8
jmp 0x838b77
cmp dword [esp + 0x1c], 0
je 0x838b37
mov dword [esp + 0x28], 0x26
jmp 0x838b44
mov eax, edx
neg eax
sbb eax, eax
and eax, 6
mov dword [esp + 0x28], eax
mov ecx, dword [ebx + 8]
movzx eax, word [ecx + 0x14]
movzx ecx, word [ecx + 0x16]
add eax, eax
sub ecx, eax
mov eax, dword [esp + 0x2c]
sub ecx, dword [esp + 0x28]
sub eax, dword [esp + 0x20]
sub ecx, 0x1a
cmp eax, ecx
jbe 0x83916b
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x24], eax
cmp word [esp + 0x34], 0
jne 0x838b83
mov edi, dword [edi]
jmp 0x838ba9
cmp dword [esp + 0x1c], 0
je 0x838b91
mov eax, 0x26
jmp 0x838b9a
mov eax, edx
neg eax
sbb eax, eax
and eax, 6
mov edi, dword [esp + 0x14]
lea eax, [eax + edi*2]
mov edi, dword [ebx + 8]
movzx edi, word [eax + edi + 0x18]
cmp dword [esp + 0x1c], 0
je 0x838bb7
mov edx, 0x26
jmp 0x838bbe
neg edx
sbb edx, edx
and edx, 6
mov eax, dword [esp + 0x24]
movzx eax, word [eax + edx]
sub edi, eax
add ecx, edi
xor edi, edi
mov dword [esp + 0x14], edi
mov eax, dword [ebx + 8]
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x838c73
test edi, edi
je 0x838c02
push dword [esi + 0x14]
push edi
push dword [esi + 0xc]
push ebp
call fcn.00795f00
add esp, 0x10
test eax, eax
jne 0x83916d
lea eax, [esp + 0x14]
push eax
push 1
push dword [esi + 0x10]
lea eax, [esp + 0x38]
push dword [esi + 0xc]
push eax
push ebp
call fcn.007942a0
add esp, 0x18
test eax, eax
jne 0x83916d
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x2e0]
test eax, 0x400
je 0x838c3d
mov edx, 0x26
jmp 0x838c49
and al, 1
movzx edx, al
neg edx
sbb edx, edx
and edx, 6
mov edi, dword [esp + 0x14]
movzx eax, word [edi + 0x14]
movzx ecx, word [edi + 0x16]
add eax, eax
sub ecx, eax
sub ecx, edx
sub ecx, 0x1a
cmp ecx, dword [esp + 0x28]
jae 0x838c73
mov eax, dword [edi + 0x10]
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x838be6
push 0
push dword [esi + 0x14]
lea eax, [ebx + 8]
push dword [esi + 0x10]
push dword [esi + 0xc]
push eax
push ebp
call fcn.007fb4a0
add esp, 0x18
test eax, eax
jne 0x83916d
cmp dword [esp + 0x14], eax
jne 0x838cb4
lea eax, [esp + 0x14]
push eax
push 0
push dword [ebx + 8]
push esi
call fcn.007fbcf0
add esp, 0x10
test eax, eax
jne 0x83916d
push 0
push dword [esi + 0x14]
lea eax, [esp + 0x1c]
push dword [esi + 0x10]
push dword [esi + 0xc]
push eax
push ebp
call fcn.007fb4a0
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x839047
mov edi, dword [esp + 0x30]
mov eax, dword [edi + 0x2e0]
test eax, 0x400
je 0x838cef
mov edx, 0x26
jmp 0x838cfb
and al, 1
movzx edx, al
neg edx
sbb edx, edx
and edx, 6
mov ecx, dword [esp + 0x14]
movzx eax, word [ecx + 0x14]
movzx ecx, word [ecx + 0x16]
add eax, eax
sub ecx, eax
sub ecx, edx
sub ecx, 0x1a
cmp ecx, dword [esp + 0x28]
jae 0x838d51
lea eax, [esp + 0x14]
push eax
push 1
push dword [esp + 0x1c]
push esi
call fcn.007fbcf0
add esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
je 0x838d51
push dword [esi + 0x14]
push dword [esp + 0x18]
push dword [esi + 0xc]
push ebp
call fcn.00795f00
mov eax, dword [esp + 0x44]
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
cmp dword [esi + 0x10], 0
je 0x839064
mov eax, dword [esi + 8]
cmp dword [eax + 0x74], 0
je 0x839064
test dword [esi + 0x13c], 0x2000
jne 0x839064
mov eax, dword [eax + 0x80]
test eax, eax
je 0x838d96
mov eax, dword [eax + 0x5c]
test eax, eax
je 0x838d96
test byte [eax + 0x31c], 8
jne 0x839064
mov dword [esp + 0x5c], 0
mov dword [esp + 0x78], 0
mov ecx, dword [edi + 0x2e0]
mov eax, ecx
and eax, 0x400
mov dword [esp + 0x1c], 0x20
and ecx, 1
mov dword [esp + 0x30], eax
test eax, eax
je 0x838dcd
mov edx, 0x26
jmp 0x838dd6
mov edx, ecx
neg edx
sbb edx, edx
and edx, 6
movzx eax, word [ebx + 0x18]
mov ebp, dword [ebx + 8]
lea ebp, [ebp + eax*2]
movzx eax, word [edx + ebp + 0x1a]
mov edx, dword [ebx + 8]
cmp byte [eax + edx], 3
jne 0x838e29
cmp dword [esp + 0x30], 0
mov dword [esp + 0x1c], 0x21
je 0x838e05
mov ecx, 0x26
jmp 0x838e0c
neg ecx
sbb ecx, ecx
and ecx, 6
movzx eax, word [ecx + ebp + 0x1a]
add eax, edx
mov dword [esp + 0x48], 0xc
mov dword [esp + 0x44], eax
mov eax, 3
jmp 0x838ebf
cmp dword [esp + 0x30], 0
je 0x838e37
mov ecx, 0x26
jmp 0x838e3e
neg ecx
sbb ecx, ecx
and ecx, 6
movzx eax, word [ecx + ebp + 0x1a]
inc edx
add eax, edx
mov dword [esp + 0x44], eax
movzx edx, word [ebx + 0x18]
test dx, dx
jne 0x838e59
mov edx, dword [edi]
xor ebp, ebp
jmp 0x838e86
mov eax, dword [edi + 0x2e0]
test eax, 0x400
je 0x838e6d
mov ecx, 0x26
jmp 0x838e79
and al, 1
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 6
mov eax, dword [ebx + 8]
mov ebp, edx
lea eax, [eax + ebp*2]
movzx edx, word [eax + ecx + 0x18]
mov eax, dword [edi + 0x2e0]
test eax, 0x400
je 0x838e9a
mov ecx, 0x26
jmp 0x838ea6
and al, 1
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 6
mov eax, dword [ebx + 8]
lea eax, [eax + ebp*2]
sub dx, word [eax + ecx + 0x1a]
dec dx
movzx eax, dx
mov dword [esp + 0x48], eax
mov eax, 1
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x28]
push ecx
push eax
lea eax, [esp + 0x50]
push eax
push dword [esp + 0x24]
push esi
call fcn.007fccf0
mov ebp, dword [esp + 0x30]
add esp, 0x18
test eax, eax
jne 0x83916d
mov ecx, dword [esp + 0x38]
mov edx, dword [edi + 0x2e0]
mov eax, edx
and eax, 0x400
mov dword [esp + 0x34], eax
cmp byte [ecx], 3
jne 0x838f41
or dword [esp + 0x1c], 2
test eax, eax
je 0x838f12
mov edx, 0x26
jmp 0x838f1f
and dl, 1
movzx edx, dl
neg edx
sbb edx, edx
and edx, 6
movzx eax, word [ebx + 0x18]
mov ecx, dword [ebx + 8]
lea eax, [edx + eax*2]
movzx eax, word [eax + ecx + 0x1c]
add eax, ecx
mov dword [esp + 0x64], 0xc
mov dword [esp + 0x60], eax
jmp 0x839012
test eax, eax
je 0x838f4c
mov ecx, 0x26
jmp 0x838f5a
mov eax, edx
and al, 1
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 6
movzx eax, word [ebx + 0x18]
lea eax, [eax*2 + 0x1c]
add eax, dword [ebx + 8]
mov dword [esp + 0x38], eax
movzx eax, word [eax + ecx]
mov ecx, dword [ebx + 8]
cmp byte [eax + ecx], 2
jne 0x838f7e
or dword [esp + 0x1c], 4
cmp dword [esp + 0x34], 0
je 0x838f8c
mov eax, 0x26
jmp 0x838f99
and dl, 1
movzx eax, dl
neg eax
sbb eax, eax
and eax, 6
mov edx, dword [esp + 0x38]
inc ecx
movzx eax, word [edx + eax]
add eax, ecx
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x2e0]
mov ecx, eax
movzx edx, word [ebx + 0x18]
and ecx, 1
test eax, 0x400
je 0x838fd0
mov eax, dword [ebx + 8]
mov ecx, 0x26
lea eax, [eax + edx*2]
movzx edx, word [eax + ecx + 0x1a]
jmp 0x838ff6
movzx esi, word [ebx + 0x18]
mov eax, ecx
mov edx, dword [ebx + 8]
neg eax
sbb eax, eax
and eax, 6
neg ecx
sbb ecx, ecx
and ecx, 6
lea eax, [eax + esi*2]
mov esi, dword [esp + 0x80]
movzx edx, word [eax + edx + 0x1a]
movzx ebp, word [ebx + 0x18]
mov eax, dword [ebx + 8]
lea eax, [eax + ebp*2]
mov ebp, dword [esp + 0x18]
sub dx, word [eax + ecx + 0x1c]
dec dx
movzx eax, dx
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x48]
push eax
movzx eax, word [esp + 0x28]
push ecx
push eax
push dword [ecx + 8]
lea eax, [esp + 0x50]
push dword [esp + 0x30]
push 0
push eax
push dword [esi + 0x10]
push edi
call fcn.008235f0
mov edi, eax
add esp, 0x28
test edi, edi
je 0x83907c
push dword [esi + 0x14]
push dword [esp + 0x18]
push dword [esi + 0xc]
push ebp
call fcn.00795f00
add esp, 0x10
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 1
mov dword [esp + 0x20], 0xffff
push 0
push dword [esi + 0x14]
lea eax, [esp + 0x1c]
push dword [esi + 0x10]
push dword [esi + 0xc]
push eax
push ebp
call fcn.007fb4a0
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x839047
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov dword [eax], ecx
mov dword [eax + 4], edx
lea eax, [esp + 0x20]
push eax
push dword [esp + 0x18]
movzx eax, word [ebx + 0x18]
push eax
push dword [ebx + 8]
push esi
call fcn.007fbe10
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x839124
movzx eax, word [esp + 0x20]
push eax
mov eax, dword [esp + 0x18]
push dword [eax + 8]
movzx eax, word [ebx + 0x18]
push eax
mov eax, dword [ebx + 8]
push dword [eax + 8]
push esi
call fcn.00839bd0
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x839124
push 2
push esi
call fcn.007fc130
add esp, 8
mov edi, eax
test dword [esi + 0x13c], 0x100
jne 0x83911e
mov eax, dword [esi + 8]
test byte [eax + 0x9c], 1
jne 0x83911e
cmp dword [eax + 0x70], 0
jne 0x839124
mov eax, dword [ebx + 0x4c]
inc dword [eax + 0x58]
push dword [esi + 0x14]
push dword [ebx + 8]
push dword [esi + 0xc]
push ebp
call fcn.00795f00
add esp, 0x10
test eax, eax
je 0x83913f
test edi, edi
cmove edi, eax
mov eax, dword [esp + 0x14]
mov dword [ebx + 8], eax
mov eax, dword [eax + 8]
mov dword [ebx + 0x14], eax
mov ax, word [esp + 0x20]
mov word [ebx + 0x18], ax
mov eax, dword [ebx + 0x74]
and eax, 0xfffffffd
or eax, 8
mov dword [ebx + 0x74], eax
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret