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

Disassembly:
mov eax, 0x4530
call fcn.00595300
mov eax, dword [0x72b01c]
xor eax, esp
mov dword [esp + 0x452c], eax
mov ecx, dword [esp + 0x4544]
mov eax, dword [esp + 0x4548]
push ebp
mov ebp, dword [esp + 0x453c]
push esi
mov esi, dword [esp + 0x4548]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x4c], esi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 1
mov dword [esp + 0x10], 0
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x3c], 0xffffffff
mov dword [esp + 0x20], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0xc], 0
push edi
mov edi, dword [esp + 0x4540]
mov dword [esp + 0xc], edi
test esi, esi
je 0x55f22c
test ecx, ecx
je 0x55f22c
mov dword [esi], 0x64
mov dword [ecx], 0
test edi, edi
jne 0x55f246
mov dword [esi], 0x74
pop edi
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0x452c]
xor ecx, esp
call fcn.00594d69
add esp, 0x4530
ret
mov ecx, dword [esp + 0x4548]
test eax, eax
push ebx
mov ebx, 0x697cc4
mov edx, ecx
cmovne ebx, eax
or edx, 0x80000
mov eax, ecx
mov dword [esp + 0x30], ebx
and eax, 0x4000000
cmove edx, ecx
mov dword [esp + 0x1c], edx
test edx, 0x18000000
jne 0x56018c
mov eax, dword [ebx + 0x24]
test eax, 0xffffff80
jne 0x56018c
mov esi, edx
and esi, 0x2000000
je 0x55f2b4
test edx, 0x1976fef3
jne 0x55f2a5
test eax, 0xfffffff3
je 0x55f2b4
mov eax, dword [esp + 0x54]
mov dword [eax], 0xc0
jmp 0x560192
cmp ebp, 0xffffffff
jne 0x55f2cc
push edi
call fcn.0058f3c0
mov edx, dword [esp + 0x20]
mov ebp, eax
add esp, 4
mov dword [esp + 0x20], ebp
cmp ebp, dword [ebx + 0x18]
jbe 0x55f2e0
mov eax, dword [esp + 0x54]
mov dword [eax], 0xbc
jmp 0x560192
mov eax, dword [ebx + 0x14]
mov ecx, 0x6b4210
test eax, eax
mov dword [esp + 0x6c], ebx
mov dword [esp + 0xc0], 0
cmovne ecx, eax
mov dword [esp + 0xdc], 0
mov dword [esp + 0x64], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0xd8], edx
lea eax, [ecx + 0x100]
mov dword [esp + 0x124], 0
mov dword [esp + 0x74], eax
lea eax, [ecx + 0x200]
mov dword [esp + 0x78], eax
lea eax, [ecx + 0x340]
mov dword [esp + 0x7c], eax
mov ecx, edi
xor eax, eax
mov dword [esp + 0xe4], 0
mov dword [esp + 0xc8], eax
xor edi, edi
mov dword [esp + 0xe0], eax
mov dword [esp + 0x128], eax
lea eax, [ecx + ebp*2]
mov dword [esp + 0x8c], eax
lea eax, [esp + 0x25c]
mov dword [esp + 0xf0], eax
xor eax, eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0x90], eax
lea eax, [esp + 0x16c]
mov dword [esp + 0xd0], eax
lea eax, [esp + 0x65c]
mov dword [esp + 0xe8], eax
lea eax, [esp + 0x165c]
mov dword [esp + 0x118], 0
mov dword [esp + 0xd4], 0x14
mov dword [esp + 0xcc], 0
mov dword [esp + 0x114], 0
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x80], eax
mov dword [esp + 0x94], 0xbb8
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0x98], 0xffffffff
mov dword [esp + 0x9c], 0xffffffff
mov dword [esp + 0xa0], 0xffffffff
mov dword [esp + 0xa4], 0xffffffff
mov dword [esp + 0xa8], 0xffffffff
mov dword [esp + 0xac], 0xffffffff
mov dword [esp + 0xb0], 0xffffffff
mov dword [esp + 0xb4], 0xffffffff
mov dword [esp + 0xb8], 0xffffffff
mov dword [esp + 0xbc], 0xffffffff
test esi, esi
jne 0x55f5f1
cmp ebp, 2
jb 0x55f5f1
cmp word [ecx + edi*2], 0x28
jne 0x55f4e4
cmp word [ecx + edi*2 + 2], 0x2a
jne 0x55f4e4
sub ebp, edi
mov esi, 0x72ae38
add ebp, 0xfffffffe
xor ebx, ebx
nop dword [eax]
movzx eax, word [esi + 4]
cmp ebp, eax
jb 0x55f4d2
push eax
push dword [esi]
lea eax, [ecx + 4]
lea eax, [eax + edi*2]
push eax
call fcn.0058f420
add esp, 0xc
test eax, eax
je 0x55f4f1
mov ecx, dword [esp + 0x10]
add ebx, 0xc
add esi, 0xc
cmp ebx, 0xfc
jb 0x55f4b0
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
jmp 0x55f5f3
movzx eax, word [esi + 4]
movzx edx, word [esi + 6]
add eax, 2
add edi, eax
mov eax, edx
cmp eax, 6
ja case.default.0x55f505
jmp dword [eax*4 + 0x5601b0]
mov eax, dword [esi + 8]
or dword [esp + 0xd8], eax
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov eax, ebp
sub eax, edi
cmp eax, 2
jb 0x55f5eb
mov ecx, dword [esp + 0x10]
jmp 0x55f491
mov ebx, dword [esp + 0x18]
or ebx, dword [esi + 8]
mov dword [esp + 0x18], ebx
jmp case.default.0x55f505
mov eax, dword [esi + 8]
or dword [esp + 0x18], 0x8000
mov dword [esp + 0x28], eax
jmp case.default.0x55f505
mov eax, dword [esi + 8]
or dword [esp + 0x18], 0x4000
mov dword [esp + 0x50], eax
jmp case.default.0x55f505
mov esi, dword [esp + 0x10]
xor ecx, ecx
movzx eax, word [esi + edi*2]
lea ebx, [esi + edi*2]
cmp eax, 0x30
jb 0x55f5e1
cmp eax, 0x39
ja 0x55f5e1
nop word [eax + eax]
cmp ax, 0x39
ja 0x55f5a4
cmp ecx, 0x19999998
ja 0x55f5a4
movzx eax, ax
lea ecx, [ecx + ecx*4]
inc edi
lea ecx, [ecx - 0x18]
lea ecx, [eax + ecx*2]
movzx eax, word [esi + edi*2]
cmp eax, 0x30
jae 0x55f580
lea eax, [edi + edi]
inc edi
cmp word [eax + esi], 0x29
jne 0x55f5d4
cmp edx, 4
jne 0x55f5bd
mov dword [esp + 0x3c], ecx
jmp 0x55f51a
cmp edx, 5
jne 0x55f5cb
mov dword [esp + 0x40], ecx
jmp 0x55f51a
mov dword [esp + 0x44], ecx
jmp 0x55f51a
mov ecx, 0xa0
lea ebx, [esi + edi*2]
jmp 0x56009a
mov ecx, 0xa0
jmp 0x56009a
mov edx, dword [esp + 0x1c]
jmp 0x55f5f3
mov esi, ecx
mov eax, dword [esp + 0xd8]
lea ebx, [esi + edi*2]
shr eax, 0x13
and eax, 1
mov dword [esp + 0x38], eax
je 0x55f657
test edx, 0x1000
je 0x55f61b
mov ecx, 0xae
jmp 0x56009a
test edx, 0x40000000
jne 0x55f643
push dword [esp + 0x68]
push ebp
push esi
call fcn.00592760
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x14], ecx
test ecx, ecx
jne 0x5600a8
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
test byte [ecx + 0x24], 1
je 0x55f65b
mov ecx, 0xbf
jmp 0x56009a
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x2c], eax
shr dword [esp + 0x2c], 0x11
and dword [esp + 0x2c], 1
je 0x55f683
test eax, 0x800
je 0x55f683
mov ecx, 0xaf
jmp 0x56009a
cmp dword [esp + 0x50], 0
jne 0x55f692
movzx eax, word [ecx + 0x1c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x55f6a2
movzx eax, word [ecx + 0x1e]
mov dword [esp + 0x28], eax
dec eax
mov dword [esp + 0xfc], 0
cmp eax, 5
ja case.default.0x55f6b7
jmp dword [eax*4 + 0x5601cc]
mov eax, 0xd
mov dword [esp + 0x100], 1
mov word [esp + 0x10c], ax
jmp 0x55f739
mov eax, 0xa
mov dword [esp + 0x100], 1
mov word [esp + 0x10c], ax
jmp 0x55f739
xor eax, eax
mov dword [esp + 0x100], 1
mov word [esp + 0x10c], ax
jmp 0x55f739
mov dword [esp + 0x100], 2
mov dword [esp + 0x10c], 0xa000d
jmp 0x55f739
mov dword [esp + 0xfc], 1
jmp 0x55f739
mov dword [esp + 0xfc], 2
mov eax, ebp
sub eax, edi
test byte [ecx + 0x24], 0xc
lea edi, [eax + 4]
cmove edi, eax
test dl, 4
je 0x55f752
lea eax, [edi + 1]
lea edi, [eax + eax*4]
cmp edi, 0x400
jb 0x55f792
push dword [ecx + 8]
mov esi, dword [ecx]
lea eax, [edi*4 + 4]
push eax
mov ecx, esi
call dword [0x5cb3f0]
call esi
add esp, 8
test eax, eax
jne 0x55f787
mov eax, dword [esp + 0x54]
mov dword [eax], 0x79
jmp 0x560112
mov esi, dword [esp + 0x10]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xe8]
lea eax, [eax + edi*4]
add eax, 4
mov dword [esp + 0xec], eax
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0xe0]
push ebx
call fcn.0055c160
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x14], ecx
test ecx, ecx
jne 0x55f815
mov eax, dword [esp + 0xe0]
mov ebx, dword [esp + 0x30]
cmp eax, 0x100
jb 0x55f82b
push dword [ebx + 8]
mov esi, dword [ebx]
lea eax, [eax*4 + 4]
push eax
mov ecx, esi
call dword [0x5cb3f0]
call esi
add esp, 8
mov dword [esp + 0xf0], eax
test eax, eax
jne 0x55f824
mov ecx, 0x79
mov dword [esp + 0xc0], eax
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0xc0]
lea ebx, [esi + eax*2]
jmp 0x56009e
mov eax, dword [esp + 0xe0]
lea eax, [eax*4 + 4]
push eax
push 0
push dword [esp + 0xf8]
call fcn.00598150
add esp, 0xc
cmp dword [esp + 0x34], 0
je 0x55f87a
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0
push eax
lea eax, [esp + 0x70]
push eax
push 0
push 0
push dword [esp + 0xf8]
call fcn.00556d20
mov ecx, eax
add esp, 0x14
mov dword [esp + 0x14], ecx
test ecx, ecx
jne 0x55f811
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x165c]
mov dword [esp + 0x20], eax
mov eax, 0x86
mov word [esp + 0x165c], ax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x70]
mov dword [esp + 0xc4], ebp
push eax
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x70]
push eax
push 0
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x48]
push eax
push dword [esp + 0x104]
call fcn.0055a730
mov ecx, dword [esp + 0x44]
add esp, 0x30
test ecx, ecx
jne 0x55f811
mov edx, dword [esp + 0x5c]
cmp edx, 0x10000
jbe 0x55f918
mov esi, dword [esp + 0x10]
mov ecx, 0x78
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
lea ebx, [esi + eax*2]
jmp 0x56009e
movzx eax, word [esp + 0xc6]
movzx ecx, word [esp + 0xc4]
push dword [ebx + 8]
mov esi, dword [ebx]
imul ecx, eax
add ecx, edx
lea edi, [ecx*2 + 0x70]
mov ecx, esi
push edi
call dword [0x5cb3f0]
call esi
mov ebp, eax
add esp, 8
mov dword [esp + 0x60], ebp
test ebp, ebp
jne 0x55f96d
mov esi, dword [esp + 0x10]
mov ecx, 0x79
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
lea ebx, [esi + eax*2]
jmp 0x56009e
xorps xmm0, xmm0
movq qword [ebp + 0x68], xmm0
movq xmm0, qword [ebx]
movq qword [ebp], xmm0
xorps xmm0, xmm0
mov eax, dword [ebx + 8]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x64]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x1c]
mov dword [ebp + 0x10], 0
movups xmmword [ebp + 0x14], xmm0
movups xmmword [ebp + 0x24], xmm0
mov dword [ebp + 0x3c], eax
mov dword [ebp + 0x34], edi
lea edi, [ebp + 0x70]
mov dword [ebp + 0x38], 0x50435245
mov eax, dword [esp + 0xd8]
mov dword [ebp + 0x40], eax
mov eax, dword [ebx + 0x24]
mov dword [ebp + 0x44], eax
mov eax, dword [esp + 0xdc]
or eax, dword [esp + 0x18]
or eax, 2
mov dword [ebp + 0x58], 0
mov dword [ebp + 0x48], eax
mov eax, dword [esp + 0x3c]
mov dword [ebp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [ebp + 0x50], eax
mov eax, dword [esp + 0x44]
mov dword [ebp + 0x54], eax
mov eax, dword [esp + 0x50]
mov word [ebp + 0x60], ax
mov eax, dword [esp + 0x28]
mov word [ebp + 0x62], ax
xor eax, eax
mov dword [ebp + 0x64], eax
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x5c], 0
mov ax, word [esp + 0xc6]
mov word [ebp + 0x6c], ax
movzx edx, ax
mov ax, word [esp + 0xc4]
movzx ecx, ax
mov word [ebp + 0x6e], ax
xor eax, eax
imul ecx, edx
mov dword [esp + 0xc8], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0x114], eax
mov dword [esp + 0x11c], eax
mov dword [esp + 0x120], eax
mov dword [esp + 0xcc], eax
mov ax, word [esp + 0xc4]
lea ebx, [ecx*2 + 0x70]
mov dword [esp + 0x90], edi
add ebx, ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x84], ebx
test ax, ax
je 0x55fbfd
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x28], ecx
cmp dx, ax
jae 0x55fbfd
mov edx, dword [esp + 0xd0]
add edx, 8
mov dword [esp + 0x3c], edx
mov eax, dword [edx - 4]
xor ebx, ebx
mov esi, dword [edx - 8]
mov dword [esp + 0x64], eax
movzx eax, word [edx]
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], esi
test ecx, ecx
je 0x55fb68
lea ecx, [eax + eax]
mov dword [esp + 0x44], ecx
nop dword [eax + eax]
mov edx, esi
lea eax, [edi + 2]
mov esi, ecx
sub esi, 4
jb 0x55faf1
nop dword [eax]
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x55faf6
add edx, 4
add eax, 4
sub esi, 4
jae 0x55fae0
cmp esi, 0xfffffffc
je 0x55fb2a
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x55fb23
cmp esi, 0xfffffffd
je 0x55fb2a
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x55fb23
cmp esi, 0xfffffffe
je 0x55fb2a
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x55fb23
cmp esi, 0xffffffff
je 0x55fb2a
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
je 0x55fb2a
sbb eax, eax
or eax, 1
jmp 0x55fb2c
xor eax, eax
test eax, eax
jne 0x55fbd0
mov ecx, dword [esp + 0x44]
cmp word [ecx + edi + 2], ax
je 0x55fbda
movzx ecx, word [esp + 0xc6]
mov eax, dword [esp + 0x28]
sub eax, ebx
imul eax, ecx
add eax, eax
push eax
lea eax, [edi + ecx*2]
push edi
push eax
call fcn.00597bd0
add esp, 0xc
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x64]
lea esi, [eax + eax]
push esi
push dword [esp + 0x44]
lea eax, [edi + 2]
mov word [edi], cx
push eax
call fcn.00597bd0
movzx eax, word [esp + 0xd2]
sub eax, dword [esp + 0x2c]
lea eax, [eax*2 - 2]
push eax
lea eax, [edi + 2]
add eax, esi
push 0
push eax
call fcn.00598150
mov ecx, dword [esp + 0x40]
add esp, 0x18
mov edx, dword [esp + 0x3c]
inc ecx
movzx eax, word [esp + 0xc4]
add edx, 0xc
mov dword [esp + 0x28], ecx
mov dword [esp + 0x3c], edx
cmp ecx, eax
jae 0x55fbf9
mov edi, dword [esp + 0x90]
jmp 0x55faa5
js 0x55fb43
mov ecx, dword [esp + 0x44]
movzx eax, word [esp + 0xc6]
inc ebx
lea edi, [edi + eax*2]
cmp ebx, dword [esp + 0x28]
jae 0x55fb64
mov esi, dword [esp + 0x40]
jmp 0x55fad0
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x34], eax
mov eax, 0x86
mov word [ebx], ax
lea eax, [esp + 0x6c]
push 0
push eax
push 0
lea eax, [esp + 0x54]
mov dword [esp + 0x2c], ebx
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x70]
push eax
push 0
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x48]
push eax
push dword [ebp + 0x40]
call fcn.0055a730
add esp, 0x30
test eax, eax
jns 0x55fc58
or dword [ebp + 0x48], 0x2000
movzx eax, word [esp + 0xe0]
mov word [ebp + 0x68], ax
movzx eax, word [esp + 0xf4]
mov word [ebp + 0x6a], ax
movzx eax, word [esp + 0x118]
mov word [ebp + 0x64], ax
cmp dword [esp + 0x11c], 0
je 0x55fc99
xor eax, eax
mov dword [esp + 0x48], 0xfffffffe
or dword [ebp + 0x48], 0x800000
jmp 0x55fca5
mov eax, dword [esp + 0x48]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
xor ecx, ecx
mov eax, dword [esp + 0x20]
mov word [eax], cx
sub eax, ebx
mov ecx, dword [esp + 0x5c]
add eax, 2
sar eax, 1
cmp eax, ecx
jbe 0x55fcdd
mov esi, dword [esp + 0x10]
mov ecx, 0x7b
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
lea ebx, [esi + eax*2]
jmp 0x56009e
sub eax, ecx
add eax, eax
add dword [ebp + 0x34], eax
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x55f811
cmp dword [esp + 0x124], ecx
je 0x55fddb
push dword [esp + 0x38]
xor edi, edi
lea ebx, [ecx + 8]
push dword [esp + 0x1c]
call fcn.0055adb0
add esp, 8
mov dword [esp + 0x4c], eax
test eax, eax
je 0x55fdd7
nop
movzx esi, word [eax + 2]
test esi, esi
jne 0x55fd2e
mov eax, dword [esp + 0x18]
jmp 0x55fd9d
mov ebp, dword [esp + 0x18]
xor edx, edx
mov eax, ebx
test edi, edi
je 0x55fd68
nop word [eax + eax]
cmp esi, dword [esp + eax*8 + 0x130]
je 0x55fd5d
jle 0x55fd52
mov ebp, dword [esp + eax*8 + 0x12c]
inc eax
inc edx
and eax, 7
cmp edx, edi
jb 0x55fd40
jmp 0x55fd68
mov eax, dword [esp + eax*8 + 0x12c]
test eax, eax
jne 0x55fd9d
push esi
push dword [esp + 0x3c]
push ebp
call fcn.00590c60
add esp, 0xc
test eax, eax
je 0x55fe12
sub ebx, 1
mov ecx, 7
cmovs ebx, ecx
mov dword [esp + ebx*8 + 0x130], esi
mov dword [esp + ebx*8 + 0x12c], eax
cmp edi, 8
jae 0x55fd9d
inc edi
mov ecx, dword [esp + 0x4c]
sub eax, dword [esp + 0x18]
push dword [esp + 0x38]
sar eax, 1
mov word [ecx + 2], ax
lea eax, [ecx + 4]
push eax
call fcn.0055adb0
add esp, 8
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x55fd20
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x55f811
mov ebp, dword [esp + 0x60]
mov ebx, dword [esp + 0x18]
test dword [ebp + 0x40], 0x4000
jne 0x55fe3a
lea eax, [esp + 0x6c]
push eax
push ebx
call fcn.0058f460
add esp, 8
test eax, eax
je 0x55fe2e
mov esi, dword [esp + 0x10]
mov ecx, 0xb4
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
lea ebx, [esi + eax*2]
jmp 0x56009e
mov esi, dword [esp + 0x10]
mov ecx, 0x99
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
lea ebx, [esi + eax*2]
jmp 0x56009e
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x55f811
mov edi, dword [ebp + 0x40]
mov esi, edi
test edi, edi
js 0x55fe64
push 0
push 0
lea eax, [esp + 0x74]
push eax
push 0
push ebx
call fcn.0055bcf0
add esp, 0x14
test eax, eax
je 0x55fe64
or esi, 0x80000000
mov dword [ebp + 0x40], esi
test esi, 0x10000
jne 0x560114
mov eax, dword [esp + 0x24]
xor edi, edi
cmp eax, 0xfffffffe
jb 0x55fec7
push edi
lea eax, [esp + 0x28]
push eax
push ebx
call fcn.0055abd0
mov esi, eax
add esp, 0xc
mov eax, dword [esp + 0x24]
cmp eax, 0xfffffffe
jb 0x55fecb
cmp dword [ebp + 0x40], edi
jl 0x55ff66
push edi
push edi
lea eax, [esp + 0x74]
push eax
push edi
push ebx
call fcn.0055bee0
add esp, 0x14
test eax, eax
mov eax, dword [esp + 0x24]
je 0x55ff66
or dword [ebp + 0x48], 0x200
jmp 0x55ff66
mov esi, dword [esp + 0x58]
mov ebx, dword [ebp + 0x48]
mov edi, 1
or ebx, 0x10
mov dword [ebp + 0x58], esi
mov dword [ebp + 0x48], ebx
test al, 1
je 0x55ff66
cmp esi, 0x80
jb 0x55ff50
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x2c]
test ecx, ecx
jne 0x55ff0c
test edx, edx
jne 0x55ff0c
cmp esi, 0xff
jb 0x55ff50
test ecx, ecx
jne 0x55ff0c
test edx, edx
je 0x55ff66
cmp esi, 0x10ffff
ja 0x55ff66
mov eax, esi
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
movzx ecx, word [eax*2 + 0x69d208]
mov eax, esi
shl ecx, 7
and eax, 0x8000007f
jns 0x55ff38
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx eax, word [ecx*2 + 0x6a1608]
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x698ffc]
add eax, esi
jmp 0x55ff58
mov eax, dword [esp + 0x74]
movzx eax, byte [esi + eax]
cmp eax, esi
mov eax, dword [esp + 0x24]
je 0x55ff66
or ebx, 0x20
mov dword [ebp + 0x48], ebx
mov edx, dword [esp + 0x48]
cmp edx, 0xfffffffe
jae 0x56004a
mov ecx, dword [ebp + 0x40]
mov ebx, dword [esp + 0x1c]
test ecx, 0x80000
je 0x55ffa3
cmp eax, 0xfffffffe
jae 0x55ffa3
and esi, 0xf800
cmp esi, 0xd800
jne 0x55ffa3
mov eax, ebx
and eax, 0xfc00
cmp eax, 0xdc00
je 0x55ffa4
inc edi
test ecx, ecx
jns 0x55ffb1
test dl, 2
je 0x56004a
mov esi, dword [ebp + 0x48]
or esi, 0x80
mov dword [ebp + 0x5c], ebx
mov dword [ebp + 0x48], esi
test dl, 1
je 0x56004a
cmp ebx, 0x80
jb 0x560035
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
test eax, eax
jne 0x55fff1
test ecx, ecx
jne 0x55fff1
cmp ebx, 0xff
jb 0x560035
test eax, eax
jne 0x55fff1
test ecx, ecx
je 0x56004a
cmp ebx, 0x10ffff
ja 0x56004a
mov eax, ebx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
movzx ecx, word [eax*2 + 0x69d208]
mov eax, ebx
shl ecx, 7
and eax, 0x8000007f
jns 0x56001d
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx eax, word [ecx*2 + 0x6a1608]
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x698ffc]
add eax, ebx
jmp 0x56003d
mov eax, dword [esp + 0x74]
movzx eax, byte [ebx + eax]
cmp eax, ebx
je 0x56004a
or esi, 0x100
mov dword [ebp + 0x48], esi
push ebp
call fcn.00591050
add esp, 4
test eax, eax
je 0x560070
mov esi, dword [esp + 0x10]
mov ecx, 0x83
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x14], ecx
lea ebx, [esi + eax*2]
jmp 0x56009e
test byte [ebp + 0x48], 0x40
je 0x560080
test edi, edi
mov eax, 1
cmove edi, eax
movzx eax, word [ebp + 0x66]
cmp eax, edi
jae 0x560114
mov word [ebp + 0x66], di
jmp 0x560114
mov ecx, 0x9c
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x68]
sub ebx, esi
sar ebx, 1
mov dword [eax], ebx
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x60]
mov dword [eax], ecx
test ebx, ebx
je 0x560112
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x5600c7
push ebx
push eax
call fcn.0056d270
add esp, 8
test dword [ebx + 0x48], 0x40000
je 0x5600fe
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx + 0x440]
test eax, eax
je 0x5600fe
add eax, 0xffffffff
mov dword [ecx + 0x440], eax
jne 0x5600fe
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
push dword [ebx + 0xc]
call dword [0x5cb3f0]
call esi
add esp, 8
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
push ebx
call dword [0x5cb3f0]
call esi
add esp, 8
xor ebp, ebp
mov eax, dword [esp + 0xe8]
lea ecx, [esp + 0x65c]
mov edi, dword [esp + 0x30]
cmp eax, ecx
je 0x56013e
push dword [edi + 8]
mov esi, dword [edi + 4]
mov ecx, esi
push eax
call dword [0x5cb3f0]
call esi
add esp, 8
cmp dword [esp + 0xd4], 0x14
jbe 0x560162
push dword [edi + 8]
mov esi, dword [edi + 4]
mov ecx, esi
push dword [esp + 0xd4]
call dword [0x5cb3f0]
call esi
add esp, 8
mov eax, dword [esp + 0xf0]
lea ecx, [esp + 0x25c]
cmp eax, ecx
je 0x560188
push dword [edi + 8]
mov esi, dword [edi + 4]
mov ecx, esi
push eax
call dword [0x5cb3f0]
call esi
add esp, 8
mov eax, ebp
jmp 0x560194
mov dword [esi], 0x75
xor eax, eax
mov ecx, dword [esp + 0x453c]
pop ebx
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.00594d69
add esp, 0x4530
ret