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

Disassembly:
sub esp, 0x94
push ebx
push ebp
push esi
mov esi, ecx
mov ecx, dword [esp + 0xac]
push edi
mov edi, edx
mov edx, dword [esp + 0xa8]
or eax, 0xffffffff
lea ebx, [edx + ecx]
lea ecx, [ebx - 1]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x28], eax
xor eax, eax
test ecx, 0xfffffa6f
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x20], eax
je 0x555268
pop edi
pop esi
pop ebp
mov eax, 0xfffffffd
pop ebx
add esp, 0x94
ret 0x18
cmp esi, eax
je 0x555778
cmp edx, eax
je 0x555778
cmp dword [esp + 0xb8], eax
jne 0x55528e
cmp dword [esp + 0xbc], eax
jg 0x555778
cmp edi, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x4c], 0x989680
mov dword [esp + 0xa0], eax
je 0x5552cb
mov eax, dword [edi]
test al, 1
je 0x5552b2
mov edx, dword [edi + 4]
mov dword [esp + 0x14], edx
test al, 2
je 0x5552bd
mov edx, dword [edi + 8]
mov dword [esp + 0x4c], edx
test al, 4
je 0x5552cb
mov eax, dword [edi + 0xc]
mov dword [esp + 0xa0], eax
cmp dword [esi], 0x50435245
je 0x5552e5
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x94
ret 0x18
mov eax, dword [esi + 0xc]
movzx ebp, word [esi + 0x18]
mov edx, eax
shr edx, 0x1c
and edx, 1
mov dword [esp + 0x24], edx
movzx edx, word [esi + 0x1a]
imul edx, ebp
mov ebp, dword [esp + 0xb0]
lea edx, [edx + esi + 0x1c]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0xa8]
mov dword [esp + 0x80], edx
mov dword [esp + 0x98], ebp
mov ebp, dword [esp + 0xac]
add edx, ebp
mov dword [esp + 0x84], edx
mov dword [esp + 0x18], edx
mov edx, eax
shr edx, 5
and edx, 1
mov ebp, dword [esp + 0xbc]
mov dword [esp + 0x74], edx
mov edx, eax
shr edx, 0xb
and edx, 1
mov dword [esp + 0x70], edx
mov edx, ecx
shr edx, 7
and edx, 1
mov edi, eax
or edi, ecx
mov dword [esp + 0x68], edx
mov edx, ecx
shr ecx, 0xa
and ecx, 1
and eax, 7
shr edx, 8
mov dword [esp + 0x78], ecx
mov ecx, dword [esi + 8]
and edx, 1
mov dword [esp + 0x40], eax
mov dword [esp + 0x5c], ecx
add ecx, 0x340
mov eax, ebp
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x60], ecx
mov ecx, 3
idiv ecx
mov ax, word [esi + 0x12]
shr edi, 4
and edi, 1
mov dword [esp + 0x44], edi
mov dword [esp + 0x9c], 0
sub ebp, edx
test ax, ax
jbe 0x555408
movzx ecx, ax
mov eax, 0x55555556
imul ebp
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp ecx, edx
jl 0x555408
lea ebp, [ecx + ecx*2 + 3]
lea ecx, [ebp*4]
call dword [0x58a0d0]
test eax, eax
mov dword [esp + 0x50], eax
jne 0x5553fe
pop edi
pop esi
pop ebp
mov eax, 0xfffffffa
pop ebx
add esp, 0x94
ret 0x18
mov dword [esp + 0x1c], 1
jmp 0x555413
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x50], ecx
lea ecx, [ebp + ebp]
mov eax, 0x55555556
imul ecx
mov ecx, dword [esp + 0xbc]
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx eax, word [esi + 0x10]
lea eax, [eax + eax + 2]
cmp eax, ecx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], edx
mov dword [esp + 0x64], 0
mov dword [esp + 0x94], 0xffffffff
mov dword [esp + 0x38], eax
jle 0x55545d
mov eax, ebp
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x50]
test ecx, ecx
je 0x55548e
cdq
lea ebp, [ecx + ebp*4]
sub eax, edx
sar eax, 1
mov ecx, 1
sub ecx, eax
lea eax, [ebp + ecx*4]
sub ebp, 4
cmp ebp, eax
jb 0x55548e
nop
mov dword [ebp], 0xffffffff
sub ebp, 4
cmp ebp, eax
jae 0x555480
test edi, edi
jne 0x5554e2
test dword [esi + 0xc], 0x40000000
je 0x5554c5
movzx eax, word [esi + 0x14]
mov ecx, eax
and ecx, 0xff
shr eax, 8
and eax, 1
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], eax
je 0x5554e2
mov edx, dword [esp + 0x5c]
movzx eax, byte [edx + ecx]
mov dword [esp + 0x10], eax
jmp 0x5554e2
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x5554e2
mov eax, dword [esp + 0x14]
test eax, eax
je 0x5554e2
test byte [eax + 4], 1
je 0x5554e2
add eax, 5
mov dword [esp + 0x20], eax
test dword [esi + 0xc], 0x20000000
je 0x555514
movzx eax, word [esi + 0x16]
mov edx, dword [esi + 8]
mov ecx, eax
and ecx, 0xff
shr eax, 8
and eax, 1
mov dword [esp + 0x3c], eax
movzx eax, byte [ecx + edx + 0x100]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x38]
lea ecx, [edi + ecx*4]
cmp edi, ecx
jae 0x55553b
sub ecx, edi
dec ecx
shr ecx, 2
inc ecx
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x50]
test ebp, ebp
jl 0x555586
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x55556c
cmp ebx, esi
jae 0x5555f4
mov eax, dword [esp + 0x5c]
movzx edx, byte [ebx]
movzx ecx, byte [edx + eax]
cmp ecx, ebp
je 0x5555f4
inc ebx
cmp ebx, esi
jb 0x555553
jmp 0x5555f4
cmp ebx, esi
jae 0x5555f4
movzx edx, byte [ebx]
cmp edx, ebp
je 0x5555f4
inc ebx
cmp ebx, esi
jb 0x555574
jmp 0x5555f4
mov eax, dword [esp + 0x24]
test eax, eax
je 0x5555b3
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x80]
add ecx, eax
cmp ebx, ecx
jbe 0x5555f4
cmp ebx, esi
jae 0x5555f4
cmp byte [ebx - 1], 0xa
je 0x5555f4
inc ebx
cmp ebx, esi
jb 0x5555a6
jmp 0x5555f4
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5555f4
cmp ebx, esi
jae 0x5555f4
nop
movzx esi, byte [ebx]
mov ecx, esi
and ecx, 7
mov eax, 1
shl eax, cl
mov ecx, eax
mov eax, esi
mov esi, dword [esp + 0x18]
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x20]
sar eax, 3
mov al, byte [eax + edx]
test al, cl
jne 0x5555f0
inc ebx
cmp ebx, esi
jb 0x5555c0
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
test edx, edx
jl 0x55565f
mov ecx, esi
sub ecx, ebx
cmp ecx, 0x3e8
jge 0x55565f
mov ecx, dword [esp + 0x30]
xor eax, eax
test ebp, ebp
setge al
add eax, ebx
cmp eax, ecx
jbe 0x55565f
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x555644
cmp eax, esi
jae 0x5556a5
lea esp, [esp]
movzx ecx, byte [eax]
inc eax
cmp ecx, edx
je 0x555656
cmp ecx, dword [esp + 0x28]
je 0x555656
cmp eax, esi
jb 0x555630
jmp 0x5556a5
cmp eax, esi
jae 0x5556a5
movzx ecx, byte [eax]
inc eax
cmp ecx, edx
je 0x555656
cmp eax, esi
jb 0x555648
jmp 0x5556a5
dec eax
cmp eax, esi
jae 0x5556a5
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x40]
push 2
push 0
push edx
mov edx, dword [esp + 0x88]
lea eax, [esp + 0x54]
push eax
push 2
mov ecx, ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x5c], 0
call fcn.00553420
test eax, eax
jne 0x5556c5
mov eax, dword [esp + 0x44]
inc ebx
test eax, eax
jne 0x5556a1
cmp ebx, esi
jbe 0x55551c
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x5556b5
mov ecx, edi
call dword [0x58a0d4]
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x94
ret 0x18
cmp eax, 1
jne 0x55577d
mov eax, dword [esp + 0x1c]
test eax, eax
mov ebp, dword [esp + 0xbc]
je 0x555721
cmp ebp, 4
mov eax, dword [esp + 0x50]
jl 0x555708
mov edi, dword [esp + 0xb8]
lea ecx, [ebp*4 - 8]
mov edx, ecx
shr ecx, 2
add edi, 8
lea esi, [eax + 8]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [esp + 0x90], ebp
jle 0x555719
mov dword [esp + 0x64], 1
mov ecx, eax
call dword [0x58a0d4]
mov eax, dword [esp + 0x64]
test eax, eax
je 0x55572d
xor eax, eax
jmp 0x555739
mov eax, dword [esp + 0x90]
cdq
sub eax, edx
sar eax, 1
cmp ebp, 2
jge 0x55574d
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x94
ret 0x18
mov ecx, dword [esp + 0x80]
mov esi, dword [esp + 0x8c]
mov edx, dword [esp + 0xb8]
sub ebx, ecx
sub esi, ecx
pop edi
mov dword [edx + 4], esi
pop esi
pop ebp
mov dword [edx], ebx
pop ebx
add esp, 0x94
ret 0x18
mov eax, 0xfffffffe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x94
ret 0x18