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

Disassembly:
mov eax, 0x3888
call fcn.005de040
mov eax, dword [0x7161c0]
xor eax, esp
mov dword [esp + 0x3884], eax
mov eax, dword [esp + 0x3894]
mov ecx, dword [esp + 0x3898]
push ebp
mov ebp, dword [esp + 0x3894]
push esi
push edi
mov edi, dword [esp + 0x3898]
mov dx, word [edi + 8]
shr dx, 3
mov dword [esp + 0x5c], eax
movzx eax, dx
mov dword [esp + 0x24], eax
movzx eax, word [ebp + 0x28c6]
xor esi, esi
cmp ax, si
mov dword [esp + 0x50], ebp
mov dword [esp + 0x64], ecx
mov dword [esp + 0x44], eax
jne 0x5578fe
pop edi
pop esi
xor al, al
pop ebp
mov ecx, dword [esp + 0x3884]
xor ecx, esp
call fcn.005d8d34
add esp, 0x3888
ret
mov cl, byte [ebp + 0x28c8]
test cl, cl
jne 0x557922
pop edi
pop esi
mov al, 0xa
pop ebp
mov ecx, dword [esp + 0x3884]
xor ecx, esp
call fcn.005d8d34
add esp, 0x3888
ret
movzx cx, cl
cmp ax, cx
jb 0x557908
movzx ax, byte [ebp + 2]
cmp ax, 1
push ebx
mov word [esp + 0x3884], si
jbe 0x55796c
lea esi, [eax - 1]
lea ecx, [esp + 0x3886]
lea edx, [ebp + 5]
movzx esi, si
nop
movzx bx, byte [edx]
imul bx, word [esp + 0x28]
add bx, word [ecx - 2]
add edx, 1
mov word [ecx], bx
add ecx, 2
sub esi, 1
jne 0x557950
cmp byte [edi + 5], 0
mov dword [esp + 0x70], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
je 0x55798b
mov edx, 0x6782a0
mov cl, 0x16
jmp 0x557992
mov edx, 0x678298
mov cl, 6
movzx cx, cl
cmp cx, si
jbe 0x558026
mov dword [esp + 0x20], edx
movzx edx, cx
mov dword [esp + 0x28], edx
lea ebx, [ebx]
cmp byte [ebp], 0
mov ecx, dword [esp + 0x20]
mov dl, byte [ecx]
mov byte [esp + 0x7c], dl
mov byte [esp + 0x11], 0
jbe 0x557e10
lea esp, [esp]
movzx ecx, byte [esp + 0x11]
movzx edx, word [ebp + ecx*2 + 0x792]
mov dword [esp + 0x44], ecx
movzx ecx, word [ebp + ecx*2 + 0x790]
sub edx, ecx
test edx, edx
mov byte [esp + 0x12], 0
jle 0x557dfc
mov dword [esp + 0x3c], 0
test ax, ax
mov dword [esp + 0x40], 0
jbe 0x557dc8
movzx eax, word [esp + 0x40]
cmp byte [eax + ebp + 0x1e78], 0
lea ecx, [eax + ebp + 0x1e78]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x58], ecx
jbe 0x557daf
movzx dx, byte [esp + 0x11]
mov ecx, eax
shl ecx, 4
sub ecx, eax
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov word [esp + 0x3a], dx
mov dword [esp + 0x64], ecx
jmp 0x557a60
movzx ecx, word [esp + 0x2c]
mov eax, dword [esp + 0x64]
mov dx, word [esp + 0x3a]
add eax, ecx
cmp word [ebp + eax*2 + 0xbb8], dx
ja 0x557d93
cmp word [ebp + eax*2 + 0x1338], dx
jbe 0x557d93
movzx edi, word [esp + 0x40]
lea eax, [edi + 0x11]
mov edx, eax
shl edx, 4
sub edx, eax
lea eax, [ebp + edx*8]
mov bl, byte [eax + ecx]
mov edx, dword [esp + 0x7c]
mov byte [esp + 0x18], bl
mov ecx, dword [esp + 0x18]
push ecx
push edx
call fcn.00557740
add esp, 8
test al, al
je 0x557d93
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x64]
add eax, ecx
mov dx, word [ebp + eax*2 + 0x12]
sub dx, word [ebp + eax*2 + 0x10]
mov dword [esp + 0x78], eax
movzx eax, dx
mov dword [esp + 0x50], eax
movzx eax, byte [edi + ebp + 5]
cmp bl, 5
setb cl
add eax, eax
add eax, eax
cdq
lea ecx, [ecx + ecx + 2]
movzx esi, cl
idiv esi
movzx edx, bl
mov byte [esp + 0x27], cl
movzx esi, ax
mov al, byte [edx + 0x6782b8]
mov dl, byte [ebp + 0x28c8]
cmp al, dl
mov dword [esp + 0x74], esi
mov byte [esp + 0x4c], al
jb 0x557b1e
mov byte [esp + 0x4c], dl
test si, si
mov dword [esp + 0x14], 0
jbe 0x557d93
mov ebx, dword [esp + 0x14]
movzx eax, si
imul eax, dword [esp + 0x3c]
mov dword [esp + 0x80], eax
movzx eax, word [esp + 0x50]
mov dword [esp + 0x50], eax
jmp 0x557b54
mov cl, byte [esp + 0x27]
movzx edx, bx
add edx, dword [esp + 0x80]
cmp edx, dword [esp + 0x50]
jge 0x557d93
movzx dx, byte [esp + 0x12]
imul dx, si
movzx ax, cl
mov ecx, dword [esp + 0x78]
add dx, bx
imul dx, ax
movzx eax, word [esp + 0x40]
add dx, word [esp + eax*2 + 0x3884]
add dx, word [ebp + ecx*2 + 0x10]
cmp word [esp + 0x70], 0
movzx edi, dx
mov dword [esp + 0x5c], edi
jne 0x557d5f
mov ax, word [esp + 0x34]
movzx edx, byte [esp + 0x4c]
movzx ecx, ax
add edx, ecx
movzx ecx, word [esp + 0x48]
cmp edx, ecx
jg 0x557c1e
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x60]
movzx eax, bx
lea esi, [eax + eax*2]
mov eax, dword [esp + 0x4c]
push edx
push eax
lea esi, [esp + esi*4 + 0x208c]
push esi
call fcn.00557790
movzx cx, byte [esp + 0x58]
mov eax, dword [esp + 0x74]
add word [esp + 0x40], cx
movzx edx, di
lea ecx, [eax + edx*2]
mov edx, dword [esp + 0x24]
push ecx
push esi
push edx
call fcn.00555110
add esp, 0x18
mov ecx, esi
call fcn.00557690
mov esi, dword [esp + 0x74]
add ebx, 1
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
jmp 0x557d7e
cmp ax, word [esp + 0x48]
jae 0x557d44
mov al, byte [esp + 0x48]
sub al, byte [esp + 0x34]
movzx edi, word [esp + 0x1c]
mov byte [esp + 0x6c], al
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x6c]
lea edi, [edi + edi*2]
add edi, edi
push eax
add edi, edi
push ecx
lea ebp, [esp + edi + 0x208c]
push ebp
call fcn.00557790
mov dl, byte [esp + edi + 0x208c]
add byte [esp + edi + 0x2098], dl
lea ebx, [esp + edi + 0x2098]
add esp, 0xc
mov ecx, ebp
call fcn.00557690
mov al, byte [ebx - 0xc]
cmp al, 0x20
mov byte [esp + 0x13], al
lea esi, [ebp - 0xc]
mov cl, al
jle 0x557d0e
sub cl, 0x20
lea edi, [esp + edi + 0x2088]
call fcn.00557470
add eax, dword [edi]
mov dword [edi - 0xc], eax
mov al, byte [esi + 8]
cmp al, 0x20
jg 0x557ccf
jl 0x557cbb
movzx ecx, al
mov eax, dword [esi]
sub ecx, 0x20
shr eax, cl
mov ecx, dword [ebp]
add ecx, eax
mov dword [esi], ecx
jmp 0x557d29
mov ecx, 0x20
sub ecx, eax
mov eax, dword [esi]
shl eax, cl
mov ecx, dword [ebp]
add ecx, eax
mov dword [esi], ecx
jmp 0x557d29
movsx edx, al
lea eax, [edx - 0x20]
cmp eax, 0x20
jge 0x557cfd
or eax, 0xffffffff
mov ecx, 0x40
sub ecx, edx
shr eax, cl
and eax, dword [esi + 4]
shl eax, cl
lea ecx, [edx - 0x20]
mov edx, dword [esi]
shr edx, cl
mov ecx, dword [ebp]
or eax, edx
add ecx, eax
mov dword [esi], ecx
jmp 0x557d29
mov eax, dword [esi + 4]
lea ecx, [edx - 0x40]
shr eax, cl
mov ecx, dword [ebp]
add ecx, eax
mov dword [esi], ecx
jmp 0x557d29
call fcn.00557470
add eax, dword [ebp]
mov edx, dword [esp + edi + 0x2088]
mov dword [esi], eax
lea eax, [esp + edi + 0x2088]
mov dword [eax - 0xc], edx
mov al, byte [esp + 0x13]
add al, byte [esp + 0x6c]
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x74]
mov byte [ebx - 0xc], al
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
movzx eax, word [esp + 0x48]
push ecx
push edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x78], 1
push 0
jmp 0x557d6e
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x1c]
push eax
push edi
push ecx
lea edx, [esp + 0x90]
push edx
call fcn.00557850
add esp, 0x10
add dword [esp + 0x30], 1
add ebx, 1
cmp bx, si
mov dword [esp + 0x14], ebx
jb 0x557b50
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x2c]
movzx dx, byte [ecx]
add eax, 1
cmp ax, dx
mov dword [esp + 0x2c], eax
jb 0x557a60
mov ecx, dword [esp + 0x40]
movzx ax, byte [ebp + 2]
add ecx, 1
cmp cx, ax
mov dword [esp + 0x40], ecx
jb 0x557a11
mov cl, byte [esp + 0x12]
mov edx, dword [esp + 0x44]
movzx esi, word [ebp + edx*2 + 0x792]
movzx edx, word [ebp + edx*2 + 0x790]
add cl, 1
mov byte [esp + 0x12], cl
movzx ecx, cl
mov dword [esp + 0x3c], ecx
add ecx, ecx
sub esi, edx
add ecx, ecx
cmp ecx, esi
jl 0x557a00
mov cl, byte [esp + 0x11]
add cl, 1
cmp cl, byte [ebp]
mov byte [esp + 0x11], cl
jb 0x5579d0
mov ecx, 1
add dword [esp + 0x20], ecx
sub dword [esp + 0x28], ecx
jne 0x5579b0
mov esi, dword [esp + 0x1c]
test si, si
je 0x558026
movzx eax, word [esp + 0x30]
movzx edi, si
cdq
idiv edi
mov ebp, ecx
mov dword [esp + 0x28], edi
movzx eax, ax
cmp ax, bp
jb 0x557fc4
movzx edx, ax
mov dword [esp + 0x18], 0
mov dword [esp + 0x3c], edx
lea esp, [esp]
test si, si
jbe 0x557fb6
movzx eax, word [esp + 0x30]
sub eax, edi
mov dword [esp + 0x58], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x44], edi
movzx eax, word [esp + 0x18]
mov dword [esp + 0x20], 0
mov dword [esp + 0x2c], eax
movzx eax, word [esp + 0x20]
add eax, dword [esp + 0x14]
movzx esi, word [esp + 0x2c]
cdq
idiv edi
cmp esi, dword [esp + 0x58]
movzx eax, dx
jge 0x557f88
shl esi, 4
cmp byte [esp + esi + 0x85], 0
lea ecx, [esp + esi + 0x85]
mov dword [esp + 0x5c], ecx
jne 0x557f69
movzx eax, ax
lea ebp, [eax + eax*2]
add ebp, ebp
add ebp, ebp
cmp byte [esp + ebp + 0x208c], 0
jle 0x557f69
cmp byte [esp + esi + 0x90], 0
lea eax, [esp + esi + 0x90]
mov dword [esp + 0x54], eax
je 0x557f0f
lea ecx, [esp + esi + 0x88]
push ecx
lea edi, [esp + ebp + 0x2088]
call fcn.005576b0
add esp, 4
movzx edx, word [esp + esi + 0x86]
mov eax, dword [esp + 0x68]
mov bl, byte [esp + ebp + 0x208c]
lea ecx, [eax + edx*2]
movzx edx, byte [esp + esi + 0x84]
push ecx
lea edi, [esp + ebp + 0x2088]
push edi
push edx
call fcn.00555110
add esp, 0xc
test al, al
jl 0x557f4c
mov eax, dword [esp + 0x5c]
mov byte [eax], 1
jmp 0x557f69
mov ecx, dword [edi]
mov edx, dword [edi + 4]
lea eax, [esp + esi + 0x88]
mov dword [eax], ecx
mov ecx, dword [edi + 8]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x54]
mov dword [eax + 8], ecx
mov byte [edx], bl
mov eax, dword [esp + 0x20]
add dword [esp + 0x2c], 1
mov edi, dword [esp + 0x28]
add eax, 1
cmp ax, word [esp + 0x1c]
mov dword [esp + 0x20], eax
jb 0x557e91
mov ebp, 1
add dword [esp + 0x14], ebp
sub dword [esp + 0x44], ebp
jne 0x557e80
lea esi, [esp + 0x2084]
mov ebx, edi
mov ecx, esi
call fcn.00557690
add esi, 0xc
sub ebx, ebp
jne 0x557fa4
mov esi, dword [esp + 0x1c]
add dword [esp + 0x18], esi
sub dword [esp + 0x3c], ebp
jne 0x557e60
xor ecx, ecx
xor eax, eax
test si, si
jbe 0x557ff3
lea ecx, [ecx]
test cx, cx
jne 0x558026
movzx ecx, ax
lea ecx, [ecx + ecx*2]
movsx dx, byte [esp + ecx*4 + 0x208c]
add eax, ebp
cmp ax, si
movzx ecx, dx
jb 0x557fd0
test cx, cx
jne 0x558026
movzx ecx, word [esp + 0x30]
sub ecx, edi
xor edx, edx
xor eax, eax
test ecx, ecx
jle 0x55802a
test dx, dx
jne 0x558026
movzx esi, ax
shl esi, 4
cmp byte [esp + esi + 0x85], dl
jne 0x558018
mov edx, ebp
add eax, ebp
movzx esi, ax
cmp esi, ecx
jl 0x558002
test dx, dx
je 0x55802a
mov al, 0xa
jmp 0x55802c
xor al, al
mov ecx, dword [esp + 0x3894]
pop ebx
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.005d8d34
add esp, 0x3888
ret