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

Disassembly:
sub esp, 0x108
push ebx
push ebp
mov ebp, dword [esp + 0x138]
mov eax, dword [ebp + 0x68]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x10]
and eax, 0xffffc000
cdq
mov ecx, dword [ebp + 0x6c]
and edx, 0x3fff
add eax, edx
push esi
mov esi, dword [ebp + 0x1c]
push edi
mov edi, eax
sar edi, 0xe
mov dword [esp + 0x58], ecx
mov ecx, dword [ebp + 0x18]
lea eax, [ecx - 1]
or eax, 0x3fff
inc eax
cdq
and edx, 0x3fff
add eax, edx
mov ebx, eax
mov eax, dword [ebp + 0x14]
and eax, 0xffffc000
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
mov dword [esp + 0x3c], eax
sar ebx, 0xe
lea eax, [esi - 1]
or eax, 0x3fff
inc eax
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x44]
and eax, 0xffffc000
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
mov dword [esp + 0xbc], eax
mov eax, dword [ebp + 0x4c]
dec eax
or eax, 0x3fff
inc eax
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
mov dword [esp + 0xb4], eax
mov eax, dword [ebp + 0x40]
and eax, 0xffffc000
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
mov dword [esp + 0xa8], eax
mov eax, dword [ebp + 0x48]
dec eax
or eax, 0x3fff
inc eax
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + 0x3c]
sar eax, 0xe
mov dword [esp + 0xb8], eax
lea eax, [edx + 1]
mov edx, dword [ebp + 0x14]
shl eax, 0xe
sub eax, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x34]
mov edx, dword [ebp + 0x10]
shl eax, 0xe
sub esi, eax
lea eax, [edi + 1]
shl eax, 0xe
sub eax, edx
mov edx, ebx
shl edx, 0xe
sub ecx, edx
add esi, 0x4000
add ecx, 0x4000
sub ebx, edi
cmp ebx, 2
mov dword [esp + 0x8c], esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x94], ecx
jge 0x538648
mov eax, dword [ebp + 0x18]
sub eax, dword [ebp + 0x10]
mov dword [esp + 0x60], eax
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov eax, esi
sub eax, ecx
cmp eax, 2
jge 0x538663
mov eax, dword [ebp + 0x1c]
sub eax, dword [ebp + 0x14]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x58]
cdq
sub eax, edx
mov edx, eax
mov eax, dword [ebp + 0x44]
sar edx, 1
cmp ecx, esi
lea eax, [edx + eax + 0x2000]
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], ecx
jge 0x538f64
mov eax, dword [esp + 0x54]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0xb0], eax
jmp 0x5386a0
mov esi, dword [esp + 0x24]
mov ecx, dword [ebp + 0x40]
mov eax, esi
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + 0xb0]
sar eax, 0xe
and esi, 0x80003fff
mov dword [esp + 0x38], eax
lea eax, [ecx + edx + 0x2000]
mov dword [esp + 0x20], eax
jns 0x5386db
dec esi
or esi, 0xffffc000
inc esi
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xbc]
push ecx
sar esi, 2
push edx
lea eax, [esp + 0x40]
shl esi, 4
push eax
lea ecx, [esp + 0xd4]
add esi, 0x6b3960
push ecx
mov dword [esp + 0xb0], esi
call fcn.00537220
mov eax, dword [ebp + 0x38]
mov edx, dword [ebp + 8]
imul edx, dword [esp + 0x30]
mov edi, dword [ebp + 4]
mov ebx, dword [ebp + 0x34]
mov ecx, eax
imul ecx, dword [esp + 0x38]
add edx, edi
add ecx, ebx
mov dword [esp + 0x2c], edx
mov edx, eax
imul edx, dword [esp + 0xd0]
mov edi, eax
imul edi, dword [esp + 0xc8]
mov ebx, eax
imul eax, dword [esp + 0xd4]
imul ebx, dword [esp + 0xcc]
add edx, ecx
add eax, ecx
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x30]
add edi, ecx
add ebx, ecx
cmp eax, edx
mov dword [esp + 0x88], 0xffffff9c
mov dword [esp + 0x50], 0
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], ebx
jne 0x538797
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x64], eax
jmp 0x5387b9
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
dec ecx
cmp eax, ecx
jne 0x5387b1
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x64], edx
jmp 0x5387b9
mov dword [esp + 0x64], 0x4000
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x48]
mov dword [esp + 0x90], eax
jge 0x538ee1
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
lea edx, [eax + ecx*4 + 2]
mov dword [esp + 0x38], edx
jmp 0x5387f0
mov esi, dword [esp + 0xa0]
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x6c]
nop
mov ebp, dword [esp + 0x20]
mov eax, ebp
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + 0x88]
sar eax, 0xe
mov ecx, eax
sub ecx, edx
and ebp, 0x80003fff
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], ecx
jns 0x538825
dec ebp
or ebp, 0xffffc000
inc ebp
mov ecx, dword [esp + 0x130]
mov edx, dword [ecx]
sar ebp, 2
sub edx, eax
shl ebp, 4
add ebp, 0x6b3960
sub edx, 2
lea ecx, [eax - 2]
or edx, ecx
mov dword [esp + 0xc4], ebp
jge 0x538875
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xa8]
push edx
push eax
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x84]
push edx
call fcn.00537220
mov eax, dword [esp + 0x10]
jmp 0x53889b
mov dword [esp + 0x78], 0xfffffffe
mov dword [esp + 0x7c], 0xffffffff
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 1
mov edx, dword [esp + 0x40]
cmp edx, 4
mov dword [esp + 0x88], eax
jl 0x5388bb
xor ecx, ecx
mov dword [esp + 0x40], 4
mov dword [esp + 0x50], ecx
jmp 0x5388ca
mov ecx, 4
sub ecx, edx
test edx, edx
je 0x538aaf
mov edx, dword [esp + 0x78]
add edx, eax
shl edx, 2
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x7c]
add edx, eax
shl edx, 2
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x80]
add edx, eax
shl edx, 2
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x84]
add edx, eax
shl edx, 2
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x538aaf
mov eax, dword [esi + 0xc]
mov ebp, dword [esi]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 8]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 4]
mov esi, dword [esp + 0x50]
lea ecx, [esp + ecx*4 + 0x78]
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x4c], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x10]
mov ecx, dword [edx]
movzx eax, byte [ecx + edi]
mov edx, dword [esp + 0x74]
imul eax, ebp
movzx edx, byte [ecx + edx]
imul edx, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x70]
movzx edx, byte [ecx + edx]
imul edx, dword [esp + 0x1c]
add eax, edx
movzx edx, byte [ecx + ebx]
imul edx, dword [esp + 0x14]
lea eax, [eax + edx + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
and esi, 3
shl esi, 2
mov dword [esp + esi + 0xd8], eax
mov eax, dword [esp + 0x70]
movzx edx, byte [ecx + eax + 1]
imul edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
movzx eax, byte [ecx + eax + 1]
imul eax, dword [esp + 0x18]
add edx, eax
movzx eax, byte [ecx + edi + 1]
imul eax, dword [esp + 0x28]
add edx, eax
movzx eax, byte [ecx + ebx + 1]
imul eax, dword [esp + 0x14]
lea eax, [edx + eax + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + 0x70]
sar eax, 0xe
mov dword [esp + esi + 0xe8], eax
movzx eax, byte [ecx + edx + 2]
imul eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x74]
movzx edx, byte [ecx + edx + 2]
imul edx, dword [esp + 0x18]
add eax, edx
movzx edx, byte [ecx + edi + 2]
imul edx, dword [esp + 0x28]
add eax, edx
movzx edx, byte [ecx + ebx + 2]
imul edx, dword [esp + 0x14]
lea eax, [eax + edx + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
mov dword [esp + esi + 0xf8], eax
mov eax, dword [esp + 0x70]
movzx edx, byte [ecx + eax + 3]
mov eax, dword [esp + 0x74]
imul edx, dword [esp + 0x1c]
movzx eax, byte [ecx + eax + 3]
imul eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
add edx, eax
movzx eax, byte [ecx + edi + 3]
movzx ecx, byte [ecx + ebx + 3]
imul eax, ebp
imul ecx, dword [esp + 0x14]
add edx, eax
lea eax, [edx + ecx + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + 0x10]
sar eax, 0xe
add edx, 4
mov dword [esp + esi + 0x108], eax
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x2c]
inc esi
dec eax
mov dword [esp + 0x4c], esi
mov dword [esp + 0x2c], eax
jne 0x538945
mov ebp, dword [esp + 0xc4]
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x40]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 4]
mov ebp, dword [ebp]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], edx
add ebx, edi
lea ecx, [ebx - 1]
lea esi, [ebx - 2]
lea edi, [ebx + 1]
mov dword [esp + 0x50], ebx
and ebx, 3
shl ebx, 2
mov edx, dword [esp + ebx + 0xd8]
imul edx, ebp
mov dword [esp + 0x28], ebp
and edi, 3
shl edi, 2
mov ebp, dword [esp + edi + 0xd8]
imul ebp, eax
add edx, ebp
and esi, 3
shl esi, 2
mov eax, dword [esp + esi + 0xd8]
imul eax, dword [esp + 0x14]
add edx, eax
and ecx, 3
shl ecx, 2
mov eax, dword [esp + ecx + 0xd8]
imul eax, dword [esp + 0x10]
lea eax, [edx + eax + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + ebx + 0xe8]
imul edx, dword [esp + 0x28]
sar eax, 0xe
mov dword [esp + 0x2c], eax
mov eax, dword [esp + edi + 0xe8]
imul eax, dword [esp + 0x18]
add edx, eax
mov eax, dword [esp + esi + 0xe8]
imul eax, dword [esp + 0x14]
add edx, eax
mov eax, dword [esp + ecx + 0xe8]
imul eax, dword [esp + 0x10]
lea eax, [edx + eax + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + ebx + 0xf8]
imul edx, dword [esp + 0x28]
sar eax, 0xe
mov dword [esp + 0x4c], eax
mov eax, dword [esp + edi + 0xf8]
imul eax, dword [esp + 0x18]
add edx, eax
mov eax, dword [esp + esi + 0xf8]
imul eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
add edx, eax
mov eax, dword [esp + ecx + 0xf8]
imul eax, ebp
lea eax, [edx + eax + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
mov edx, dword [esp + ebx + 0x108]
imul edx, dword [esp + 0x28]
sar eax, 0xe
mov ecx, dword [esp + ecx + 0x108]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + edi + 0x108]
imul eax, dword [esp + 0x18]
add edx, eax
mov eax, dword [esp + esi + 0x108]
imul eax, dword [esp + 0x14]
add edx, eax
imul ecx, ebp
mov ebp, dword [esp + 0x90]
lea eax, [edx + ecx + 0x2000]
cdq
and edx, 0x3fff
add eax, edx
mov ebx, eax
mov eax, dword [esp + 0x44]
sar ebx, 0xe
cmp ebp, eax
je 0x538c4f
mov edx, dword [esp + 0x48]
dec edx
cmp ebp, edx
je 0x538c4f
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x3c]
je 0x538c4f
mov ecx, dword [esp + 0x34]
dec ecx
cmp eax, ecx
jne 0x538df1
mov eax, dword [esp + 0x148]
test eax, eax
jne 0x538df1
cmp ebp, dword [esp + 0x44]
jne 0x538c6e
mov edx, dword [esp + 0x60]
mov dword [esp + 0x10], edx
jmp 0x538c8c
mov eax, dword [esp + 0x48]
dec eax
cmp ebp, eax
jne 0x538c84
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x10], ecx
jmp 0x538c8c
mov dword [esp + 0x10], 0x4000
mov eax, dword [esp + 0x10]
imul dword [esp + 0x64]
shrd eax, edx, 0xe
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x2c]
imul eax, eax, 0xff
cdq
and edx, 0x3fff
add eax, edx
sar eax, 0xe
test ecx, ecx
jge 0x538cc4
xor ecx, ecx
jmp 0x538cd1
cmp ecx, 0xff
jle 0x538cd1
mov ecx, 0xff
mov esi, dword [esp + 0x38]
movzx edx, byte [esi - 2]
movzx edi, al
movzx eax, cl
sub eax, edx
imul eax, edi
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, edx
jns 0x538cfb
xor ecx, ecx
jmp 0x538d08
cmp ecx, 0xff
jle 0x538d08
mov ecx, 0xff
mov eax, dword [esp + 0x4c]
test eax, eax
mov byte [esi - 2], cl
jge 0x538d17
xor eax, eax
jmp 0x538d23
cmp eax, 0xff
jle 0x538d23
mov eax, 0xff
movzx edx, byte [esi - 1]
movzx eax, al
sub eax, edx
imul eax, edi
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, edx
jns 0x538d46
xor ecx, ecx
jmp 0x538d53
cmp ecx, 0xff
jle 0x538d53
mov ecx, 0xff
mov eax, dword [esp + 0x1c]
test eax, eax
mov byte [esi - 1], cl
jge 0x538d62
xor eax, eax
jmp 0x538d6e
cmp eax, 0xff
jle 0x538d6e
mov eax, 0xff
movzx edx, byte [esi]
movzx eax, al
sub eax, edx
imul eax, edi
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, edx
jns 0x538d90
xor ecx, ecx
jmp 0x538d9d
cmp ecx, 0xff
jle 0x538d9d
mov ecx, 0xff
test ebx, ebx
mov byte [esi], cl
jge 0x538da7
xor eax, eax
jmp 0x538db6
cmp ebx, 0xff
mov eax, 0xff
jg 0x538db6
mov eax, ebx
movzx edx, byte [esi + 1]
movzx eax, al
sub eax, edx
imul eax, edi
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, edx
jns 0x538ddf
xor ecx, ecx
mov byte [esi + 1], cl
jmp 0x538e5f
cmp ecx, 0xff
jle 0x538dec
mov ecx, 0xff
mov byte [esi + 1], cl
jmp 0x538e5f
mov eax, dword [esp + 0x2c]
test eax, eax
jge 0x538dfd
xor eax, eax
jmp 0x538e09
cmp eax, 0xff
jle 0x538e09
mov eax, 0xff
mov esi, dword [esp + 0x38]
mov byte [esi - 2], al
mov eax, dword [esp + 0x4c]
test eax, eax
jge 0x538e1c
xor eax, eax
jmp 0x538e28
cmp eax, 0xff
jle 0x538e28
mov eax, 0xff
mov byte [esi - 1], al
mov eax, dword [esp + 0x1c]
test eax, eax
jge 0x538e37
xor eax, eax
jmp 0x538e43
cmp eax, 0xff
jle 0x538e43
mov eax, 0xff
test ebx, ebx
mov byte [esi], al
jge 0x538e4d
xor eax, eax
jmp 0x538e5c
cmp ebx, 0xff
mov eax, 0xff
jg 0x538e5c
mov eax, ebx
mov byte [esi + 1], al
cmp ebp, dword [esp + 0x44]
jne 0x538e81
mov eax, dword [esp + 0x60]
imul dword [esp + 0x54]
shrd eax, edx, 0xe
mov dword [esp + 0xc0], eax
mov edx, dword [esp + 0xc0]
jmp 0x538eb5
mov eax, dword [esp + 0x48]
add eax, 0xfffffffe
cmp ebp, eax
jne 0x538eb1
mov eax, dword [esp + 0x94]
imul dword [esp + 0x54]
shrd eax, edx, 0xe
mov dword [esp + 0x9c], eax
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x20]
add eax, ecx
jmp 0x538ebb
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x20]
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x48]
inc ebp
add esi, 4
cmp ebp, eax
mov dword [esp + 0x90], ebp
mov dword [esp + 0x38], esi
jl 0x5387e0
mov ebp, dword [esp + 0x140]
mov ecx, dword [esp + 0x30]
cmp ecx, dword [esp + 0x3c]
jne 0x538f11
mov eax, dword [esp + 0x5c]
imul dword [esp + 0x58]
shrd eax, edx, 0xe
mov dword [esp + 0xa4], eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0xa4]
add edx, eax
mov dword [esp + 0x24], edx
jmp 0x538f53
mov edx, dword [esp + 0x34]
add edx, 0xfffffffe
cmp ecx, edx
jne 0x538f45
mov eax, dword [esp + 0x8c]
imul dword [esp + 0x58]
shrd eax, edx, 0xe
mov dword [esp + 0xac], eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0xac]
add edx, eax
mov dword [esp + 0x24], edx
jmp 0x538f53
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x58]
add eax, edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
inc ecx
cmp ecx, eax
mov dword [esp + 0x30], ecx
jl 0x5386a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret 0x30