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

Disassembly:
sub esp, 0x130
mov eax, dword [esp + 0x140]
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x13c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx + 0x2c]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x138]
test eax, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xc], 0
jle 0x5236cf
push ebx
push ebp
push esi
push edi
jmp 0x522c13
mov edx, dword [esp + 0x14c]
mov ecx, dword [esp + 0x148]
dec ecx
test edx, edx
mov dword [esp + 0x148], ecx
mov dword [esp + 0x38], edx
jbe 0x5236ab
mov edi, edi
mov ecx, dword [esp + 0x154]
mov eax, dword [ecx]
mov esi, dword [ecx + 4]
mov ebp, dword [esp + 0x3c]
mov edx, eax
sub edx, esi
mov esi, dword [esp + 0x144]
js 0x522c71
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx]
mov edi, dword [esp + 0x150]
shl eax, 1
imul eax, dword [edi + 0xc]
mov dword [esp + 0x40], eax
mov dword [esp + 0x10], 0
jmp 0x5231e6
push ebp
push eax
lea eax, [esp + 0x48]
push eax
push esi
call fcn.00524b10
movzx ecx, byte [ebp + 0x29]
mov esi, dword [esi + ecx*4 + 0x188]
mov ecx, dword [esi + 0xfc]
mov edx, dword [esp + 0x14c]
lea eax, [esi + 0xfc]
add edx, ecx
add ecx, ecx
add esp, 0x10
sub eax, 4
cmp edx, ecx
mov dword [esp + 0x1c], esi
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x138]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x11c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xfc]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x118]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x134]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x130]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x114]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xf8]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xdc]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xbc]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xd8]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xf4]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x110]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x12c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x128]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x10c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xf0]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xd4]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xb8]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x9c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x7c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x98]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xb4]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xd0]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xec]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x108]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x124]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x120]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x104]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xe8]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xcc]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xb0]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x94]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x78]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x5c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x58]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x74]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x90]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xac]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xc8]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xe4]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x100]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xe0]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xc4]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xa8]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x8c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x70]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x54]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x50]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x6c]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x88]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xa4]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xc0]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0xa0]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x84]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
mov ecx, dword [eax]
mov edx, dword [esp + 0x68]
add edx, ecx
add ecx, ecx
sub eax, 4
cmp edx, ecx
jae 0x5231bf
sub eax, 4
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x150]
mov ecx, dword [esp + 0x154]
sub eax, esi
mov esi, dword [esp + 0x144]
sar eax, 2
inc eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x40]
mov edx, dword [esi + 0x114]
test edx, edx
je 0x523300
test eax, eax
mov esi, dword [ecx + 8]
mov ecx, dword [ebx]
mov ebp, dword [ebp + 0x20]
mov edx, ecx
jge 0x523204
neg edx
add eax, edx
add ecx, ecx
cdq
idiv ecx
test ebp, ebp
mov dword [edi + 0xc], eax
je 0x523286
mov byte [esi], al
mov eax, dword [esp + 0x10]
cmp eax, 1
mov byte [esi + 0x40], al
jb 0x523276
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov ebx, 0x674ba8
sub ebp, eax
lea edi, [esi + 1]
lea ecx, [eax + 4]
sub ebx, esi
mov dword [esp + 0x18], edx
nop
movzx eax, byte [ebx + edi]
mov eax, dword [esp + eax*4 + 0x40]
mov edx, dword [ecx + ebp]
cmp eax, edx
jl 0x523255
mov edx, dword [ecx]
add eax, edx
jmp 0x52325f
neg edx
cmp eax, edx
jge 0x523267
mov edx, dword [ecx]
sub eax, edx
lea esi, [edx + edx]
cdq
idiv esi
mov byte [edi], al
mov eax, dword [esp + 0x18]
add ecx, 4
inc edi
dec eax
mov dword [esp + 0x18], eax
jne 0x523240
mov eax, dword [esp + 0x154]
add dword [eax + 8], 0x41
jmp 0x52368a
mov word [esi], ax
mov eax, dword [esp + 0x10]
mov edi, 1
cmp eax, edi
mov word [esi + 0x80], ax
jb 0x5232ed
mov edx, dword [esp + 0x1c]
sub edx, ebx
lea ebp, [ebx + 4]
mov dword [esp + 0x20], edx
lea ebx, [ebx]
movzx ecx, byte [edi + 0x674ba8]
mov eax, dword [esp + ecx*4 + 0x40]
mov ecx, dword [edx + ebp]
cmp eax, ecx
jl 0x5232c9
mov ecx, dword [ebp]
add eax, ecx
jmp 0x5232d4
neg ecx
cmp eax, ecx
jge 0x5232e1
mov ecx, dword [ebp]
sub eax, ecx
cdq
add ecx, ecx
idiv ecx
mov edx, dword [esp + 0x20]
mov word [esi + edi*2], ax
mov eax, dword [esp + 0x10]
inc edi
add ebp, 4
cmp edi, eax
jbe 0x5232b0
mov eax, dword [esp + 0x154]
add dword [eax + 8], 0x82
jmp 0x52368a
mov ecx, dword [esi + 0x2f0]
test ecx, ecx
je 0x523461
test eax, eax
mov ecx, dword [ebx]
jge 0x523318
sub eax, ecx
jmp 0x52331a
add eax, ecx
add ecx, ecx
cdq
idiv ecx
mov edx, dword [edi + 0xc]
mov ecx, eax
sub ecx, edx
jne 0x52332c
xor eax, eax
jmp 0x523350
test ecx, ecx
mov dword [edi + 0xc], eax
jge 0x523335
neg ecx
cmp ecx, 0x40
jge 0x523343
movzx eax, byte [ecx + 0x676890]
jmp 0x523350
sar ecx, 6
movzx eax, byte [ecx + 0x676890]
add eax, 6
mov ecx, dword [esi + 0x114]
test ecx, ecx
jne 0x523361
mov ecx, dword [esp + 0x2c]
inc dword [ecx + eax*4]
mov eax, dword [esp + 0x10]
mov ebp, 1
cmp eax, ebp
mov esi, ebp
jb 0x523438
mov edx, dword [esp + 0x1c]
sub edx, ebx
mov eax, 0x674ba9
sub eax, 2
lea edi, [ebx + 4]
mov dword [esp + 0x20], edx
mov dword [esp + 0x28], eax
jmp 0x523393
mov eax, dword [esp + 0x28]
movzx eax, byte [eax + esi + 1]
mov ecx, dword [esp + eax*4 + 0x40]
mov eax, dword [edi + edx]
cmp ecx, eax
lea ebx, [esi + 1]
jl 0x5233ad
mov edx, dword [edi]
lea eax, [edx + ecx]
jmp 0x5233bd
neg eax
cmp ecx, eax
jge 0x523427
mov edx, dword [edi]
mov eax, edx
sub eax, ecx
lea ecx, [edx + edx]
cdq
idiv ecx
cmp eax, 0x40
jge 0x5233d1
movzx edx, byte [eax + 0x676890]
jmp 0x5233de
sar eax, 6
movzx edx, byte [eax + 0x676890]
add edx, 6
mov eax, dword [esp + 0x144]
mov ecx, dword [eax + 0x114]
test ecx, ecx
jne 0x523421
sub esi, ebp
mov ecx, esi
cmp ecx, 0x10
jb 0x52340f
mov ebp, dword [esp + 0x14]
mov esi, dword [ebp + 0x3c]
mov eax, ecx
shr eax, 4
add esi, eax
sub ecx, 0x10
dec eax
jne 0x523406
mov dword [ebp + 0x3c], esi
shl edx, 4
add edx, ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + edx*4]
lea edx, [ecx + edx*4]
inc eax
mov dword [edx], eax
mov edx, dword [esp + 0x20]
mov ebp, ebx
mov eax, dword [esp + 0x10]
mov esi, ebx
add edi, 4
cmp esi, eax
jbe 0x52338f
mov edx, dword [esp + 0x144]
mov eax, dword [edx + 0x114]
test eax, eax
jne 0x52368a
cmp ebp, 0x40
je 0x52368a
mov eax, dword [esp + 0x14]
inc dword [eax]
jmp 0x52368a
test eax, eax
mov ebx, dword [ebx]
lea ecx, [ebx + ebx]
jge 0x52346e
sub eax, ebx
jmp 0x523470
add eax, ebx
cdq
idiv ecx
mov ecx, dword [edi + 0xc]
mov edx, eax
sub edx, ecx
jne 0x52348d
mov eax, dword [esp + 0x2c]
movzx edx, byte [eax + 0x18]
movzx eax, word [eax]
push edx
jmp 0x5234fe
test edx, edx
mov dword [edi + 0xc], eax
jge 0x5234cf
neg edx
mov eax, edx
cmp eax, 0x40
jge 0x5234b2
movzx ecx, byte [eax + 0x676890]
mov edx, 1
shl edx, cl
not eax
dec edx
and edx, eax
jmp 0x5234ec
mov ecx, eax
sar ecx, 6
movzx ecx, byte [ecx + 0x676890]
add ecx, 6
mov edx, 1
shl edx, cl
not eax
dec edx
and edx, eax
jmp 0x5234ec
cmp edx, 0x40
jge 0x5234dd
movzx ecx, byte [edx + 0x676890]
jmp 0x5234ec
mov eax, edx
sar eax, 6
movzx ecx, byte [eax + 0x676890]
add ecx, 6
mov eax, dword [esp + 0x2c]
movzx edi, byte [ecx + eax + 0x18]
movzx eax, word [eax + ecx*2]
shl eax, cl
push edi
add eax, edx
push eax
push esi
call fcn.005204b0
mov eax, dword [esp + 0x1c]
mov esi, 1
add esp, 0xc
cmp eax, esi
mov dword [esp + 0x18], esi
jb 0x52366a
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
sub ebp, eax
mov ebx, 0x674ba9
lea edx, [eax + 4]
sub ebx, 2
mov dword [esp + 0x34], edx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], ebx
mov edi, edi
movzx ecx, byte [ebx + esi + 1]
mov eax, dword [edx + ebp]
mov ecx, dword [esp + ecx*4 + 0x40]
cmp ecx, eax
lea edi, [esi + 1]
mov dword [esp + 0x30], edi
jl 0x523583
mov edx, dword [edx]
lea eax, [edx + ecx]
lea ecx, [edx + edx]
cdq
idiv ecx
mov edi, eax
cmp edi, 0x40
jge 0x523572
movzx ebp, byte [edi + 0x676890]
jmp 0x5235c4
mov edx, edi
sar edx, 6
movzx ebp, byte [edx + 0x676890]
add ebp, 6
jmp 0x5235c4
neg eax
cmp ecx, eax
jge 0x52364e
mov edx, dword [edx]
mov eax, edx
sub eax, ecx
lea ecx, [edx + edx]
cdq
idiv ecx
cmp eax, 0x40
jge 0x5235a7
movzx ebp, byte [eax + 0x676890]
jmp 0x5235b6
mov edx, eax
sar edx, 6
movzx ebp, byte [edx + 0x676890]
add ebp, 6
mov edi, 1
mov ecx, ebp
shl edi, cl
not eax
dec edi
and edi, eax
sub esi, dword [esp + 0x18]
cmp esi, 0x10
jb 0x523607
mov ebx, esi
shr ebx, 4
jmp 0x5235e0
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax + 0x16f]
movzx edx, word [eax + 0x1e]
mov eax, dword [esp + 0x144]
push ecx
push edx
push eax
call fcn.005204b0
add esp, 0xc
sub esi, 0x10
dec ebx
jne 0x5235e0
mov eax, dword [esp + 0x14]
mov ecx, ebp
shl ecx, 4
add esi, ecx
movzx edx, byte [esi + eax + 0x160]
movzx eax, word [eax + esi*2]
mov ecx, ebp
shl eax, cl
mov ecx, dword [esp + 0x144]
push edx
add eax, edi
push eax
push ecx
call fcn.005204b0
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x40]
add esp, 0xc
mov eax, dword [esp + 0x10]
mov esi, edi
add edx, 4
cmp esi, eax
mov dword [esp + 0x34], edx
jbe 0x523540
cmp dword [esp + 0x18], 0x40
je 0x52368a
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax + 0x160]
movzx edx, word [eax]
mov eax, dword [esp + 0x144]
push ecx
push edx
push eax
call fcn.005204b0
add esp, 0xc
mov eax, dword [esp + 0x154]
add dword [eax], 8
mov eax, dword [esp + 0x144]
inc dword [eax + 0x148]
dec dword [esp + 0x38]
jne 0x522c30
mov ecx, dword [esp + 0x154]
mov eax, dword [esp + 0x148]
add ecx, 0xc
test eax, eax
mov dword [esp + 0x154], ecx
jg 0x522c0c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret