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

Disassembly:
push ebp
push edi
push esi
push ebx
add esp, 0xffffff80
mov edi, dword [esp + 0xbc]
mov esi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0xd4]
mov eax, dword [esp + 0x94]
mov eax, dword [eax + 0x10f0]
sub eax, dword [esp + 0xb8]
add eax, 0x141
add eax, eax
add eax, eax
add eax, dword [esp + 0x94]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x94]
mov eax, dword [eax + 0x10ec]
mov dword [esp], eax
sub eax, dword [esp + 0xb8]
add eax, 2
add eax, eax
add eax, eax
add eax, dword [esp + 0xa8]
mov dword [esp + 0x5c], eax
mov ebx, ebp
sar ebx, 6
mov eax, dword [esp + 0x94]
add eax, 0xf3c
mov dword [esp + 4], eax
test ecx, ecx
jle 0x4390c7
mov eax, dword [esp + 0xdc]
sar eax, 1
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xd8]
sar eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x94]
lea edx, [eax + 0x1080]
mov eax, dword [esp + 0xd8]
add eax, 0x3fffffff
add eax, eax
add eax, eax
add eax, edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xd8]
add eax, 0x7fffffff
add eax, eax
add eax, dword [esp + 0xb4]
mov dword [esp + 0x48], eax
mov eax, esi
sar eax, 0x10
mov dword [esp + 0x34], eax
mov eax, edi
sar eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xcc]
sar eax, 1
lea edx, [eax - 0x200]
mov dword [esp + 0x60], edx
mov edx, 0x200
sub edx, eax
mov dword [esp + 0x70], edx
mov eax, dword [esp + 0xd0]
add eax, 0x3b0
mov dword [esp + 0x6c], eax
movsx eax, word [esp + 0xd0]
mov dword [esp + 0x7c], eax
movsx edx, word [esp + 0xcc]
mov dword [esp + 0x30], edx
imul eax, edx
mov dword [esp + 0x74], eax
movsx eax, word [esp + 0x6c]
imul eax, edx
mov dword [esp + 0x78], eax
mov eax, ebp
sar eax, 0x15
add eax, 1
sar eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x94]
mov eax, dword [eax + 0x10f4]
movsx edx, word [esp + 0xc0]
mov dword [esp + 0x50], edx
movsx esi, si
mov dword [esp + 0x54], esi
movsx ebx, bx
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0xa0]
mov dword [esp + 8], ebx
add ebx, ecx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0xd8]
lea edx, [ebx - 3]
and edx, 0xfffffffe
add edx, edx
add edx, edx
add edx, 0x1090
add edx, dword [esp + 0x94]
mov dword [esp], edx
movsx ebx, di
mov dword [esp + 0x68], ebx
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0x94]
mov dword [esp + 0xd4], ecx
imul eax, eax, 0xbb38435
add eax, 0x3619636b
mov dword [ebp + 0x10f4], eax
mov edx, dword [ebx]
mov eax, dword [esp + 0xac]
movsx ecx, word [eax]
movzx eax, dx
imul eax, ecx
sar eax, 0x10
sar edx, 0x10
imul edx, ecx
add eax, edx
mov edi, dword [esp + 0x3c]
add eax, edi
mov ecx, dword [ebx - 4]
mov edi, dword [esp + 0xac]
movsx esi, word [edi + 2]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [ebx - 8]
movsx esi, word [edi + 4]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [ebx - 0xc]
movsx esi, word [edi + 6]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [ebx - 0x10]
movsx esi, word [edi + 8]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [ebx - 0x14]
movsx esi, word [edi + 0xa]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [ebx - 0x18]
movsx esi, word [edi + 0xc]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [ebx - 0x1c]
movsx esi, word [edi + 0xe]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [ebx - 0x20]
movsx esi, word [edi + 0x10]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [ebx - 0x24]
movsx esi, word [edi + 0x12]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add eax, edx
mov dword [esp + 4], eax
cmp dword [esp + 0xdc], 0x10
jne 0x438d3a
mov edx, dword [ebx - 0x28]
movsx ecx, word [edi + 0x14]
movzx eax, dx
imul eax, ecx
sar eax, 0x10
sar edx, 0x10
imul edx, ecx
add eax, edx
mov edi, dword [esp + 4]
add eax, edi
mov ecx, dword [ebx - 0x2c]
mov edi, dword [esp + 0xac]
movsx esi, word [edi + 0x16]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [ebx - 0x30]
movsx esi, word [edi + 0x18]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [ebx - 0x34]
movsx esi, word [edi + 0x1a]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [ebx - 0x38]
movsx esi, word [edi + 0x1c]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [ebx - 0x3c]
movsx esi, word [edi + 0x1e]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add eax, edx
mov dword [esp + 4], eax
cmp dword [esp + 0x98], 2
je 0x43916e
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov edx, dword [ebp + 0x10e4]
mov ecx, dword [ebp + 0x1080]
mov dword [ebp + 0x1080], edx
mov eax, dword [esp + 0xb4]
movsx esi, word [eax]
movzx eax, dx
imul eax, esi
sar eax, 0x10
sar edx, 0x10
imul edx, esi
add eax, edx
mov edi, dword [esp + 0x40]
add eax, edi
cmp dword [esp + 0xd8], 2
jle 0x438e05
lea esi, [ebp + 0x1088]
mov edi, dword [esp + 0xb4]
add edi, 4
mov dword [esp + 0x14], ebx
mov edx, eax
mov dword [esp + 0x94], ebp
mov ebx, dword [esi - 4]
mov dword [esi - 4], ecx
movsx eax, word [edi - 2]
movzx ebp, cx
imul ebp, eax
sar ebp, 0x10
sar ecx, 0x10
imul ecx, eax
lea eax, [ebp + ecx]
add eax, edx
mov ecx, dword [esi]
mov dword [esi], ebx
movsx ebp, word [edi]
movzx edx, bx
imul edx, ebp
sar edx, 0x10
sar ebx, 0x10
imul ebx, ebp
add edx, ebx
add edx, eax
add esi, 8
add edi, 4
mov eax, dword [esp]
cmp esi, eax
jne 0x438db2
mov ebx, dword [esp + 0x14]
mov eax, edx
mov ebp, dword [esp + 0x94]
mov edi, dword [esp + 0x44]
mov dword [edi], ecx
mov edi, dword [esp + 0x48]
movsx esi, word [edi]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add eax, edx
mov edx, dword [ebp + 0x10e0]
mov ecx, edx
sar ecx, 0x10
movzx edx, dx
mov esi, dword [esp + 0x50]
mov edi, esi
mov dword [esp + 0x14], edx
imul edi, edx
sar edi, 0x10
imul esi, ecx
add esi, edi
add eax, eax
lea edi, [esi + eax]
mov dword [esp + 0x18], edi
mov eax, dword [ebp + 0x10f0]
mov eax, dword [ebp + eax*4 + 0x4fc]
movzx esi, ax
mov edx, dword [esp + 0x54]
imul esi, edx
sar esi, 0x10
sar eax, 0x10
imul eax, edx
add eax, esi
mov esi, dword [esp + 0x34]
imul ecx, esi
add ecx, eax
mov edx, dword [esp + 0x14]
imul edx, esi
sar edx, 0x10
lea esi, [edx + ecx]
mov dword [esp + 0x14], esi
mov eax, dword [esp + 4]
add eax, eax
add eax, eax
sub eax, edi
sub eax, esi
mov edi, dword [esp + 0xb8]
test edi, edi
jle 0x439162
mov edi, dword [esp + 0x2c]
mov ecx, dword [edi - 8]
add ecx, dword [edi]
mov edx, dword [edi - 4]
movzx esi, cx
mov edi, dword [esp + 0x68]
imul esi, edi
sar esi, 0x10
sar ecx, 0x10
imul ecx, edi
add ecx, esi
mov esi, edx
sar esi, 0x10
mov edi, dword [esp + 0x64]
imul esi, edi
add esi, ecx
movzx edx, dx
imul edx, edi
sar edx, 0x10
add edx, esi
add dword [esp + 0x2c], 4
lea ecx, [eax + eax]
add edx, edx
mov eax, dword [esp + 0x20]
sub eax, edx
add eax, ecx
sar eax, 2
add eax, 1
sar eax, 1
mov edi, dword [esp + 0xc]
mov ecx, dword [edi]
mov edx, eax
sub edx, ecx
mov esi, dword [ebp + 0x10f4]
test esi, esi
js 0x438f14
sub ecx, eax
mov edx, ecx
mov eax, 0xffff8400
cmp edx, eax
cmovl edx, eax
mov eax, 0x7800
cmp edx, eax
cmovg edx, eax
mov esi, edx
sub esi, dword [esp + 0xd0]
cmp dword [esp + 0xcc], 0x800
jle 0x439115
mov eax, dword [esp + 0x60]
cmp esi, eax
jle 0x439225
mov ecx, esi
sub ecx, eax
sar ecx, 0xa
je 0x43923e
shl ecx, 0xa
sub ecx, 0x50
add ecx, dword [esp + 0xd0]
lea eax, [ecx + 0x400]
movsx esi, cx
mov edi, dword [esp + 0x30]
imul esi, edi
mov dword [esp + 0x20], esi
movsx edi, ax
mov esi, dword [esp + 0x30]
imul edi, esi
mov dword [esp + 0x24], edi
mov esi, edx
sub esi, ecx
sub edx, eax
mov dword [esp + 0x28], edx
movsx edx, si
movsx esi, word [esp + 0x28]
imul edx, edx
mov edi, dword [esp + 0x20]
add edx, edi
imul esi, esi
mov edi, dword [esp + 0x24]
add esi, edi
cmp edx, esi
cmovle eax, ecx
mov edx, eax
sar edx, 9
add edx, 1
sar edx, 1
mov edi, dword [esp + 8]
mov byte [edi], dl
shl eax, 4
mov edx, dword [ebp + 0x10f4]
test edx, edx
jns 0x438fd2
neg eax
mov edi, dword [esp + 0x1c]
add eax, edi
mov edx, dword [esp + 4]
shl edx, 4
add edx, eax
movzx esi, dx
mov edi, dword [esp + 0x58]
imul esi, edi
sar esi, 0x10
mov ecx, edx
sar ecx, 0x10
imul ecx, edi
add ecx, esi
mov esi, dword [esp + 0x38]
imul esi, edx
add ecx, esi
sar ecx, 7
add ecx, 1
mov edi, ecx
sar edi, 1
mov esi, 0x7fff
cmp ecx, 0xffff
jg 0x439026
cmp edi, 0xffff8000
mov esi, 0xffff8000
cmovge esi, edi
mov edi, dword [esp + 0x10]
mov word [edi], si
add ebx, 4
mov dword [ebx], edx
mov ecx, dword [esp + 0xc]
mov edi, dword [ecx]
mov dword [esp + 4], edi
shl edi, 4
sub edx, edi
mov dword [ebp + 0x10e4], edx
mov edi, dword [esp + 0x18]
add edi, edi
mov ecx, edi
add ecx, edi
sub edx, ecx
mov dword [ebp + 0x10e0], edx
mov esi, dword [ebp + 0x10f0]
mov edi, dword [esp + 0x14]
add edi, edi
mov ecx, edi
add ecx, edi
sub edx, ecx
mov dword [ebp + esi*4 + 0x500], edx
mov edx, dword [ebp + 0x10ec]
add eax, eax
mov edi, dword [esp + 0xa8]
mov dword [edi + edx*4], eax
add dword [ebp + 0x10f0], 1
add dword [ebp + 0x10ec], 1
mov edi, dword [esp + 8]
movsx eax, byte [edi]
add eax, dword [ebp + 0x10f4]
mov dword [ebp + 0x10f4], eax
add dword [esp + 0x10], 2
add dword [esp + 0xc], 4
add edi, 1
mov dword [esp + 8], edi
cmp dword [esp + 0x4c], edi
jne 0x438b58
mov ecx, dword [esp + 0xd4]
lea eax, [ecx + 0x3c0]
add eax, eax
add eax, eax
mov ebx, dword [esp + 0x94]
lea edi, [ebx + 0xf00]
lea esi, [ebx + eax]
mov eax, 0x40
test bl, 1
jne 0x4392a4
test edi, 2
jne 0x4392ce
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
test al, 2
je 0x439108
movsw word es:[edi], word [esi]
test al, 1
je 0x43910d
movsb byte es:[edi], byte [esi]
sub esp, 0xffffff80
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, esi
sar ecx, 0xa
test ecx, ecx
jg 0x438f5b
je 0x43923e
cmp ecx, 0xffffffff
je 0x439264
shl ecx, 0xa
add ecx, 0x50
add ecx, dword [esp + 0xd0]
lea eax, [ecx + 0x400]
mov esi, ecx
neg esi
movsx esi, si
mov edi, dword [esp + 0x30]
imul esi, edi
mov dword [esp + 0x20], esi
mov edi, eax
neg edi
movsx edi, di
jmp 0x438f7f
sar eax, 1
add eax, 1
sar eax, 1
jmp 0x438efc
mov edi, dword [esp + 0x5c]
mov eax, dword [edi]
mov esi, dword [esp + 0xb0]
movsx ecx, word [esi]
movzx edx, ax
imul edx, ecx
sar edx, 0x10
sar eax, 0x10
imul eax, ecx
add edx, eax
add edx, 2
mov ecx, dword [edi - 4]
movsx esi, word [esi + 2]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [edi - 8]
mov esi, dword [esp + 0xb0]
movsx esi, word [esi + 4]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add edx, eax
mov ecx, dword [edi - 0xc]
mov eax, dword [esp + 0xb0]
movsx esi, word [eax + 6]
movzx eax, cx
imul eax, esi
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
add eax, ecx
add eax, edx
mov ecx, dword [edi - 0x10]
mov esi, dword [esp + 0xb0]
movsx esi, word [esi + 8]
movzx edx, cx
imul edx, esi
sar edx, 0x10
sar ecx, 0x10
imul ecx, esi
add edx, ecx
add eax, edx
mov dword [esp + 0x20], eax
add edi, 4
mov dword [esp + 0x5c], edi
add eax, eax
mov dword [esp + 0x1c], eax
jmp 0x438d58
cmp dword [esp + 0x70], esi
jle 0x43923a
mov eax, dword [esp + 0x60]
lea ecx, [esi + eax]
sar ecx, 0xa
jmp 0x43911a
test esi, esi
js 0x439264
mov eax, dword [esp + 0x6c]
sub edx, eax
mov dword [esp + 0x28], edx
mov edi, dword [esp + 0x78]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x74]
mov dword [esp + 0x20], edi
mov ecx, dword [esp + 0xd0]
jmp 0x438f94
mov eax, dword [esp + 0xd0]
lea ecx, [eax - 0x3b0]
mov eax, ecx
neg eax
cwde
mov edi, dword [esp + 0x30]
imul eax, edi
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0x30]
imul edi, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], esi
mov esi, edx
sub esi, ecx
mov eax, dword [esp + 0xd0]
jmp 0x438f94
movzx eax, byte [esi]
mov byte [ebx + 0xf00], al
mov eax, dword [esp + 0x94]
lea edi, [eax + 0xf01]
add esi, 1
mov eax, 0x3f
test edi, 2
je 0x4390fb
movzx ebx, word [esi]
mov word [edi], bx
add edi, 2
add esi, 2
sub eax, 2
jmp 0x4390fb