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

Disassembly:
sub esp, 0x5c
mov ecx, dword [esp + 0x64]
movzx eax, word [ecx]
push ebx
mov ebx, dword [esp + 0x64]
add eax, 7
push ebp
cdq
push esi
mov esi, dword [ebx + 0x11]
push edi
and edx, 7
add eax, edx
mov edi, eax
mov eax, dword [esp + 0x80]
sar edi, 3
add edi, 2
push edi
dec esi
push ecx
shr esi, 5
xor ebp, ebp
push eax
mov dword [esp + 0x48], esi
mov dword [esp + 0x40], ebp
mov dword [esp + 0x24], edi
call sub.MSVCR90.dll_memcpy
mov ecx, dword [ebx + 0x35]
push edi
push ebp
push ecx
call sub.MSVCR90.dll_memset
mov edx, dword [ebx + 0x39]
push edi
push ebp
push edx
call sub.MSVCR90.dll_memset
add esp, 0x24
cmp esi, ebp
mov dword [esp + 0x14], ebp
jl 0x557e84
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 0x74]
mov ecx, ebp
xor eax, eax
cmp ecx, dword [esp + 0x3c]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
jge 0x55753c
mov eax, dword [esp + 0x78]
mov eax, dword [eax + ecx*4 + 2]
mov edi, eax
mov ebx, eax
shr ebx, 0x10
and edi, 0xff0000
or edi, ebx
mov ebx, eax
shl ebx, 0x10
and eax, 0xff00
or ebx, eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + ecx*4 + 2]
shl ebx, 8
shr edi, 8
or edi, ebx
mov ebx, eax
mov ebp, eax
shr ebp, 0x10
and ebx, 0xff0000
or ebx, ebp
mov ebp, eax
shl ebp, 0x10
and eax, 0xff00
or ebp, eax
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + ecx*4 + 2]
shl ebp, 8
shr ebx, 8
or ebx, ebp
mov ebp, eax
and ebp, 0xff0000
mov ecx, eax
shr ecx, 0x10
or ebp, ecx
mov ecx, eax
shl ecx, 0x10
and eax, 0xff00
or ecx, eax
shr ebp, 8
shl ecx, 8
or ebp, ecx
cmp dword [esp + 0x34], 0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], ebp
jne 0x557525
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x31]
mov eax, dword [esp + 0x14]
mov eax, dword [ecx + eax*4]
cmp eax, 3
mov dword [esp + 0x18], 0
mov dword [esp + 0x54], eax
jl 0x5574fe
mov ecx, dword [esp + 0x70]
cmp byte [ecx + 8], 0
je 0x5574ef
mov eax, ebp
mov ecx, ebx
xor eax, ebx
xor ecx, edi
or eax, ecx
test eax, 0xff000000
jne 0x557486
test eax, 0xffff0000
jne 0x55747e
test eax, eax
jne 0x557469
mov ecx, dword [esp + 0x70]
mov ebp, dword [ecx + 0x35]
mov eax, dword [esp + 0x14]
or edi, 0xffffffff
mov dword [ebp + eax*4 + 2], edi
mov ecx, dword [ecx + 0x39]
mov dword [ecx + eax*4 + 2], edi
jmp 0x557cac
and eax, 0xff00
neg eax
sbb eax, eax
and eax, 0xfffffff8
add eax, 0x18
mov dword [esp + 0x18], eax
jmp 0x557486
mov dword [esp + 0x18], 8
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x14]
mov edx, dword [eax + 0x25]
mov edx, dword [edx + ecx*4]
mov ecx, dword [esp + 0x18]
mov esi, dword [edx + ecx*4]
mov edx, dword [eax + 0x2d]
mov edx, dword [edx + esi*4]
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], edx
cmp edx, 0x1f
jae 0x5574be
lea ecx, [edx + 1]
or eax, 0xffffffff
shl eax, cl
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x70]
mov eax, dword [ecx + 0xd]
mov eax, dword [eax + esi*4]
mov ecx, dword [ecx + 0x1d]
sub edx, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x5c], eax
mov eax, dword [ecx + eax*4]
inc edx
mov esi, eax
mov ecx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], edx
shl esi, cl
cmp eax, 3
jl 0x5574fe
mov eax, dword [esp + 0x70]
cmp byte [eax + 8], 0
jne 0x557525
mov ecx, ebp
mov eax, ebx
xor ecx, ebx
xor eax, edi
or ecx, eax
je 0x55744b
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x1d]
mov eax, dword [esp + 0x54]
mov eax, dword [ecx + eax*4 + 4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
mov eax, ebx
xor eax, edi
xor ebp, ebx
not eax
not ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], ebp
jmp 0x557785
mov ebx, dword [esp + 0x78]
movzx eax, word [ebx]
mov ecx, dword [esp + 0x70]
mov ecx, dword [ecx + 0x11]
add eax, 7
cdq
and edx, 7
add eax, edx
mov edi, eax
sar edi, 3
lea eax, [edi*8]
cdq
idiv ecx
mov eax, dword [ebx + edi - 2]
lea ebp, [edi - 4]
mov ebx, eax
shr ebx, 0x10
mov dword [esp + 0x64], ecx
mov dword [esp + 0x18], ebp
and edi, 3
add edi, edi
add edi, edi
add edi, edi
mov ecx, edx
mov edx, eax
and edx, 0xff0000
or edx, ebx
shr edx, 8
mov ebx, eax
shl ebx, 0x10
and eax, 0xff00
or ebx, eax
shl ebx, 8
or edx, ebx
shr edx, cl
shl edx, cl
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x74]
mov eax, dword [edx + ebp + 2]
mov ebx, eax
mov edx, eax
shr edx, 0x10
and ebx, 0xff0000
or ebx, edx
mov edx, eax
shl edx, 0x10
and eax, 0xff00
or edx, eax
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + ebp + 2]
shl edx, 8
shr ebx, 8
or ebx, edx
mov edx, eax
and edx, 0xff0000
mov ebp, eax
shr ebp, 0x10
or edx, ebp
mov ebp, eax
shl ebp, 0x10
and eax, 0xff00
shr edx, 8
or ebp, eax
shl ebp, 8
or edx, ebp
shr edx, cl
shr ebx, cl
shl edx, cl
shl ebx, cl
mov dword [esp + 0x38], edx
test edi, edi
je 0x55761e
mov ecx, 0x20
sub ecx, edi
shl dword [esp + 0x2c], cl
shl ebx, cl
shl dword [esp + 0x38], cl
cmp dword [esp + 0x34], 0
jne 0x557753
mov ebp, dword [esp + 0x70]
mov eax, dword [ebp + 0x31]
mov edx, dword [esp + 0x14]
mov eax, dword [eax + edx*4]
xor ecx, ecx
cmp eax, 3
mov dword [esp + 0x18], ecx
mov dword [esp + 0x54], eax
jl 0x557719
cmp byte [ebp + 8], cl
je 0x557719
mov eax, dword [esp + 0x38]
mov esi, ebx
xor esi, dword [esp + 0x2c]
xor eax, ebx
or eax, esi
test eax, 0xff000000
jne 0x557693
test eax, 0xffff0000
jne 0x55768a
test eax, eax
je 0x5585bf
and eax, 0xff00
neg eax
sbb eax, eax
and eax, 0xfffffff8
add eax, 0x18
mov ecx, eax
jmp 0x55768f
mov ecx, 8
mov dword [esp + 0x18], ecx
mov eax, dword [ebp + 0x25]
mov edx, dword [eax + edx*4]
mov edi, dword [edx + ecx*4]
mov eax, dword [ebp + 0x2d]
mov edx, dword [eax + edi*4]
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edx
cmp edx, 0x1f
jae 0x5576e6
lea esi, [edx + 1]
or eax, 0xffffffff
test esi, esi
jl 0x5576bf
mov ecx, esi
shl eax, cl
jmp 0x5576c8
mov ecx, 1
sub ecx, edx
shr eax, cl
mov dword [esp + 0x24], eax
or eax, 0xffffffff
test esi, esi
jl 0x5576d9
mov ecx, esi
shl eax, cl
jmp 0x5576e2
mov ecx, 1
sub ecx, edx
shr eax, cl
mov dword [esp + 0x28], eax
mov ecx, dword [ebp + 0xd]
mov eax, dword [ecx + edi*4]
mov ecx, dword [ebp + 0x1d]
mov esi, dword [ecx + eax*4]
sub edx, eax
add edx, 1
mov dword [esp + 0x20], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], esi
mov ecx, edx
js 0x557713
shl esi, cl
jmp 0x55771d
neg ecx
shr esi, cl
jmp 0x55771d
mov edx, dword [esp + 0x58]
cmp dword [esp + 0x54], 3
jl 0x55772a
cmp byte [ebp + 8], 0
jne 0x557757
mov eax, dword [esp + 0x38]
mov ecx, ebx
xor ecx, dword [esp + 0x2c]
xor eax, ebx
or eax, ecx
je 0x5585bf
mov eax, dword [ebp + 0x1d]
mov ecx, dword [esp + 0x54]
mov eax, dword [eax + ecx*4 + 4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
jmp 0x557757
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x64]
and eax, 0x1f
mov ecx, 0x20
sub ecx, eax
mov eax, ebx
xor eax, dword [esp + 0x2c]
not eax
shr eax, cl
shl eax, cl
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x38]
xor eax, ebx
not eax
shr eax, cl
shl eax, cl
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x31]
mov eax, dword [esp + 0x14]
cmp dword [ecx + eax*4], 3
jl 0x557a04
mov ecx, dword [esp + 0x70]
cmp byte [ecx + 8], 0
je 0x557a04
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5577dc
mov ecx, edx
test edx, edx
jl 0x5577c8
shl eax, cl
mov edi, ebx
not edi
and eax, esi
mov ebp, eax
and edi, ebp
and edi, dword [esp + 0x2c]
jmp 0x5577e0
neg ecx
shr eax, cl
mov edi, ebx
not edi
and eax, esi
mov ebp, eax
and edi, ebp
and edi, dword [esp + 0x2c]
jmp 0x5577e0
xor ebp, ebp
xor edi, edi
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x64], ebp
je 0x557821
mov eax, dword [esp + 0x1c]
mov ecx, edx
test edx, edx
jl 0x5577f9
shl eax, cl
jmp 0x5577fd
neg ecx
shr eax, cl
and ebp, dword [esp + 0x4c]
and eax, esi
or dword [esp + 0x24], ebp
mov ecx, eax
mov eax, dword [esp + 0x38]
not eax
and eax, ecx
mov dword [esp + 0x68], ecx
and ecx, dword [esp + 0x50]
and eax, ebx
or dword [esp + 0x28], ecx
jmp 0x557823
xor eax, eax
mov ecx, dword [esp + 0x1c]
or ecx, dword [esp + 0x10]
je 0x5585bf
cmp edi, eax
ja 0x557cca
test eax, eax
jne 0x557d61
test edx, edx
jl 0x55792f
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x70]
inc eax
mov dword [esp + 0x34], eax
cmp eax, dword [ebp + 4]
je 0x5585bf
mov edi, dword [esp + 0x30]
mov ecx, edx
cmp edi, 0x20
jae 0x557880
mov eax, dword [esp + 0x4c]
shr eax, cl
and dword [esp + 0x10], eax
mov eax, dword [esp + 0x50]
shr eax, cl
and dword [esp + 0x1c], eax
jmp 0x5578a4
mov ebp, dword [esp + 0x4c]
mov eax, esi
shr eax, cl
mov ecx, edx
shr ebp, cl
not eax
or ebp, eax
and dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x50]
shr ebp, cl
or ebp, eax
and dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x70]
sub edi, dword [esp + 0x20]
mov ecx, dword [ebp + 0xd]
mov eax, dword [esp + 0x34]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x30], edi
mov dword [esp + 0x20], eax
cmp eax, dword [esp + 0x5c]
jne 0x5578d7
test edi, edi
jl 0x557903
lea ecx, [eax + edi]
cmp ecx, 0x20
jae 0x5578d7
mov ecx, eax
sub edx, eax
shr esi, cl
jmp 0x5577a8
test edi, edi
jl 0x557903
sub edx, eax
mov dword [esp + 0x5c], eax
js 0x5578f2
mov ecx, dword [ebp + 0x1d]
mov esi, dword [ecx + eax*4]
mov ecx, edx
shl esi, cl
jmp 0x5577a8
mov esi, dword [ebp + 0x1d]
mov esi, dword [esi + eax*4]
mov ecx, edx
neg ecx
shr esi, cl
jmp 0x5577a8
and edi, 0x1f
mov edx, edi
sub edx, eax
add edx, 1
mov dword [esp + 0x30], edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], eax
js 0x557927
mov ecx, dword [ebp + 0x1d]
mov esi, dword [ecx + eax*4]
mov ecx, edx
shl esi, cl
jmp 0x557985
mov esi, dword [ebp + 0x1d]
mov esi, dword [esi + eax*4]
jmp 0x55797f
mov eax, dword [esp + 0x4c]
add dword [esp + 0x30], 0x20
mov ecx, edx
neg ecx
shl eax, cl
shl esi, cl
not esi
or eax, esi
and dword [esp + 0x10], eax
mov eax, dword [esp + 0x50]
shl eax, cl
or eax, esi
and dword [esp + 0x1c], eax
add edx, 0x20
mov dword [esp + 0x58], edx
js 0x557971
mov ecx, dword [esp + 0x70]
mov eax, dword [ecx + 0x1d]
mov ecx, dword [esp + 0x20]
mov esi, dword [eax + ecx*4]
mov ecx, edx
shl esi, cl
jmp 0x557985
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x1d]
mov esi, dword [esp + 0x20]
mov esi, dword [eax + esi*4]
mov ecx, edx
neg ecx
shr esi, cl
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x3c]
jge 0x557a04
cmp dword [esp + 0x1c], 0
je 0x557a04
mov eax, dword [esp + 0x24]
test eax, eax
je 0x5579cd
mov edi, eax
mov ebp, eax
shr ebp, 0x10
and edi, 0xff0000
or edi, ebp
mov ebp, eax
shl eax, 0x10
and ebp, 0xff00
or ebp, eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x35]
shr edi, 8
shl ebp, 8
or edi, ebp
mov dword [eax + ecx*4 + 2], edi
mov eax, dword [esp + 0x28]
test eax, eax
je 0x557a04
mov edi, eax
mov ebp, eax
shr ebp, 0x10
and edi, 0xff0000
or edi, ebp
mov ebp, eax
shl eax, 0x10
and ebp, 0xff00
or ebp, eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x39]
shr edi, 8
shl ebp, 8
or edi, ebp
mov dword [eax + ecx*4 + 2], edi
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x31]
mov edi, dword [esp + 0x14]
mov ecx, dword [ecx + edi*4]
cmp ecx, 3
mov dword [esp + 0x54], ecx
jl 0x557a25
cmp byte [eax + 8], 0
jne 0x557cac
xor edi, edi
mov eax, 1
rol eax, cl
cmp ecx, edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x40], edi
jl 0x557abe
mov esi, dword [esp + 0x70]
mov esi, dword [esi + 0x21]
mov ebp, dword [esp + 0x14]
mov esi, dword [esi + ebp*4]
lea esi, [esi + ecx*4]
mov dword [esp + 0x34], esi
nop
mov esi, dword [esp + 0x34]
mov esi, dword [esi]
test dword [esp + 0x1c], eax
je 0x557a8c
mov edi, esi
and edi, dword [esp + 0x38]
mov ebp, esi
and ebp, ebx
cmp edi, ebp
jae 0x557a88
mov edi, dword [esp + 0x38]
not edi
and edi, esi
and edi, ebx
or dword [esp + 0x60], edi
mov edi, dword [esp + 0x40]
test dword [esp + 0x10], eax
je 0x557ab2
mov ebp, esi
and ebp, dword [esp + 0x2c]
mov edi, esi
and edi, ebx
cmp edi, ebp
jae 0x557aae
mov edi, ebx
not edi
and edi, esi
and edi, dword [esp + 0x2c]
or dword [esp + 0x64], edi
mov edi, dword [esp + 0x40]
sub dword [esp + 0x34], 4
dec ecx
ror eax, 1
test ecx, ecx
jge 0x557a60
mov ebp, dword [esp + 0x60]
or ebp, dword [esp + 0x64]
mov dword [esp + 0x40], ebp
je 0x557b13
mov eax, 0x10
mov edi, eax
mov esi, 0xffff0000
shr eax, 1
test esi, ebp
je 0x557aef
add edi, eax
or ebp, 0xffffffff
mov ecx, edi
shl ebp, cl
and esi, ebp
mov ebp, dword [esp + 0x40]
jmp 0x557afa
sub edi, eax
lea ecx, [edi + eax]
shr esi, cl
mov ecx, edi
shl esi, cl
cmp eax, 1
ja 0x557ad8
mov dword [esp + 0x18], eax
test esi, ebp
jne 0x557b08
dec edi
mov ecx, edi
or ebp, 0xffffffff
shl ebp, cl
mov dword [esp + 0x40], ebp
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x34], ecx
test ecx, ecx
jl 0x557bf0
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x21]
mov esi, dword [esp + 0x14]
mov eax, dword [eax + esi*4]
lea eax, [eax + ecx*4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x54]
mov esi, dword [eax]
test ebp, ebp
je 0x557b44
and esi, ebp
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x1c]
test ecx, eax
je 0x557b92
mov ecx, dword [esp + 0x50]
mov ebp, esi
xor ebp, ecx
and ebp, esi
mov dword [esp + 0x28], ebp
je 0x557b86
or ecx, 0xffffffff
shr ecx, 1
cmp ebp, ecx
jb 0x557b66
mov dword [esp + 0x18], ecx
not ecx
and ecx, esi
and ecx, dword [esp + 0x50]
or dword [esp + 0x48], ecx
mov ecx, eax
not ecx
and dword [esp + 0x1c], ecx
jmp 0x557b8e
mov ebp, esi
and ebp, ecx
or dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
test ecx, eax
je 0x557bda
mov ecx, dword [esp + 0x4c]
mov ebp, esi
xor ebp, ecx
and ebp, esi
mov dword [esp + 0x24], ebp
je 0x557bce
or ecx, 0xffffffff
lea ecx, [ecx]
shr ecx, 1
cmp ebp, ecx
jb 0x557bb0
mov dword [esp + 0x18], ecx
not ecx
and ecx, esi
and ecx, dword [esp + 0x4c]
not eax
or dword [esp + 0x44], ecx
and dword [esp + 0x10], eax
jmp 0x557bd6
mov eax, esi
and eax, ecx
or dword [esp + 0x44], eax
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
sub dword [esp + 0x54], 4
dec ecx
mov dword [esp + 0x34], ecx
test ecx, ecx
jge 0x557b38
test ebp, ebp
jne 0x557c86
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
jge 0x557c8a
test ecx, ecx
je 0x557c48
mov eax, ecx
mov ebp, ecx
shr ebp, 0x10
and eax, 0xff0000
or eax, ebp
mov ebp, ecx
shl ebp, 0x10
and ecx, 0xff00
or ebp, ecx
mov ecx, dword [esp + 0x70]
mov ecx, dword [ecx + 0x35]
shl ebp, 8
shr eax, 8
or eax, ebp
mov ebp, dword [esp + 0x14]
mov dword [ecx + ebp*4 + 2], eax
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
test eax, eax
je 0x557c8e
mov ecx, eax
mov ebp, eax
shr ebp, 0x10
and ecx, 0xff0000
or ecx, ebp
mov ebp, eax
shl ebp, 0x10
and eax, 0xff00
or ebp, eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x39]
shl ebp, 8
shr ecx, 8
or ecx, ebp
mov ebp, dword [esp + 0x14]
mov dword [eax + ebp*4 + 2], ecx
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
test edi, edi
jne 0x557dde
test ebp, ebp
jne 0x557dde
mov ecx, dword [esp + 0x3c]
cmp dword [esp + 0x14], ecx
je 0x5585bf
mov ecx, dword [esp + 0x14]
inc ecx
cmp ecx, dword [esp + 0x3c]
mov dword [esp + 0x14], ecx
jle 0x557356
mov edi, dword [esp + 0x18]
mov ebp, ecx
jmp 0x557e88
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
cmp ecx, 0x20
jae 0x557ce0
mov esi, 1
shl esi, cl
jmp 0x557cea
sub eax, ecx
mov esi, Ordinal_2
add eax, 0x1f
test esi, edi
jne 0x557cf7
mov edi, edi
shr esi, 1
dec eax
test esi, edi
je 0x557cf0
mov edi, dword [esp + 0x4c]
lea ebp, [eax + edx]
mov ecx, ebp
shr edi, cl
mov ecx, eax
shl edi, cl
or ecx, 0xffffffff
mov dword [esp + 0x74], ecx
mov ecx, ebp
mov ebp, dword [esp + 0x74]
shr ebp, cl
mov ecx, eax
shl ebp, cl
mov ecx, dword [esp + 0x2c]
not ecx
not ebp
or edi, ebp
and dword [esp + 0x10], edi
test esi, ecx
je 0x557d52
mov ecx, edx
test edx, edx
jl 0x557d48
sub eax, dword [esp + 0x20]
shr esi, cl
not esi
and dword [esp + 0x10], esi
add eax, dword [esp + 0x30]
mov edi, eax
jmp 0x55829b
neg ecx
shl esi, cl
not esi
and dword [esp + 0x10], esi
sub eax, dword [esp + 0x20]
add eax, dword [esp + 0x30]
mov edi, eax
jmp 0x55829b
xor edi, edi
mov ecx, edx
test edx, edx
jl 0x557d6d
shr eax, cl
jmp 0x557d71
neg ecx
shl eax, cl
cmp eax, 1
jbe 0x557d7e
shr eax, 1
inc edi
cmp eax, 1
ja 0x557d76
mov eax, edi
neg eax
cmp edx, eax
je 0x557da1
or eax, 0xffffffff
add edx, edi
mov ecx, edx
js 0x557d97
shl eax, cl
mov dword [esp + 0x18], eax
jmp 0x557da9
neg ecx
shr eax, cl
mov dword [esp + 0x18], eax
jmp 0x557da9
mov dword [esp + 0x18], 0xffffffff
mov eax, dword [esp + 0x64]
and eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
not esi
mov ecx, esi
and ecx, dword [esp + 0x24]
and esi, dword [esp + 0x28]
or ecx, eax
mov eax, dword [esp + 0x68]
and eax, dword [esp + 0x50]
mov dword [esp + 0x24], ecx
or esi, eax
mov dword [esp + 0x28], esi
jmp 0x557e88
mov edx, dword [esp + 0x60]
cmp edx, dword [esp + 0x64]
jbe 0x557e01
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
jmp 0x557e88
mov edx, dword [esp + 0x70]
cmp byte [edx + 8], 0
je 0x557e5e
mov eax, dword [edx + 0x25]
mov esi, dword [esp + 0x14]
mov eax, dword [eax + esi*4]
mov ecx, 0x1f
sub ecx, edi
mov eax, dword [eax + ecx*4]
mov ecx, dword [edx + 0xd]
mov ecx, dword [ecx + eax*4]
mov edx, dword [edx + 0x2d]
mov eax, dword [edx + eax*4]
sub eax, ecx
inc eax
cmp eax, edi
mov dword [esp + 0x20], ecx
jle 0x557e4a
mov ecx, eax
sub ecx, edi
mov eax, 1
shl eax, cl
or dword [esp + 0x10], eax
jmp 0x55829b
mov ecx, edi
sub ecx, eax
mov edx, 1
shl edx, cl
or dword [esp + 0x10], edx
jmp 0x55829b
mov eax, edx
mov ecx, dword [eax + 0x29]
mov eax, dword [esp + 0x14]
mov ecx, dword [ecx + eax*4]
mov edx, 0x1f
sub edx, edi
mov ecx, dword [ecx + edx*4]
mov eax, 1
shl eax, cl
or dword [esp + 0x10], eax
jmp 0x55829b
mov ebx, dword [esp + 0x70]
mov esi, dword [esp + 0x28]
not esi
or esi, dword [esp + 0x38]
mov ecx, ebx
not ecx
and esi, ecx
and esi, edi
mov dword [esp + 0x40], ebp
jne 0x557fd0
mov edx, dword [esp + 0x70]
mov ecx, dword [edx + 0x39]
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x74]
add eax, 2
sub edx, eax
add edx, 2
lea edi, [eax + ebp*4]
lea ecx, [ecx + ebp*4 + 2]
mov dword [esp + 0x68], edx
jmp 0x557ed4
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x68]
mov eax, dword [edx + edi - 4]
mov ebx, eax
mov edx, eax
shr edx, 0x10
sub edi, 4
and ebx, 0xff0000
or ebx, edx
mov edx, eax
and eax, 0xff00
shl edx, 0x10
or edx, eax
mov eax, dword [ecx - 4]
shl edx, 8
sub ecx, 4
mov esi, eax
shr ebx, 8
or ebx, edx
mov edx, eax
shr edx, 0x10
and esi, 0xff0000
or esi, edx
mov edx, eax
and eax, 0xff00
shl edx, 0x10
or edx, eax
shr esi, 8
mov dword [esp + 0x74], ecx
mov ecx, dword [edi]
shl edx, 8
or esi, edx
mov eax, ecx
and eax, 0xff0000
mov edx, ecx
shr edx, 0x10
or eax, edx
shr eax, 8
not esi
or esi, eax
mov eax, ecx
and ecx, 0xff00
shl eax, 0x10
or eax, ecx
shl eax, 8
mov ecx, ebx
or esi, eax
not ecx
dec ebp
and esi, ecx
je 0x557ed0
cmp ebp, dword [esp + 0x40]
mov dword [esp + 0x14], ebp
jge 0x557fd0
mov edx, dword [esp + 0x70]
mov eax, dword [edx + 0x35]
mov eax, dword [eax + ebp*4 + 2]
mov ecx, eax
and ecx, 0xff0000
mov edx, eax
shr edx, 0x10
or ecx, edx
mov edx, eax
shl edx, 0x10
and eax, 0xff00
or edx, eax
mov eax, dword [esp + 0x78]
mov eax, dword [eax + ebp*4 + 2]
shl edx, 8
shr ecx, 8
or ecx, edx
mov dword [esp + 0x24], ecx
mov ecx, eax
mov edx, eax
shr edx, 0x10
and ecx, 0xff0000
or ecx, edx
mov edx, eax
shl edx, 0x10
and eax, 0xff00
or edx, eax
shr ecx, 8
shl edx, 8
or ecx, edx
mov dword [esp + 0x2c], ecx
cmp ebp, dword [esp + 0x3c]
jne 0x557ffd
mov eax, dword [esp + 0x78]
movzx eax, word [eax]
mov ecx, dword [esp + 0x70]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, eax
add eax, eax
add eax, eax
cdq
idiv dword [ecx + 0x11]
mov ecx, edx
shr esi, cl
shl esi, cl
mov eax, 0x10
mov edi, eax
mov edx, 0xffff
lea esp, [esp]
shr eax, 1
test edx, esi
je 0x558022
sub edi, eax
mov ecx, edi
shr edx, cl
sub ecx, eax
shl edx, cl
jmp 0x55802e
mov ecx, edi
sub ecx, eax
shr edx, cl
mov ecx, edi
shl edx, cl
add edi, eax
cmp eax, 1
ja 0x558010
test edx, esi
je 0x558038
dec edi
mov eax, dword [esp + 0x70]
cmp byte [eax + 8], 0
je 0x5581b5
mov edx, dword [eax + 0x25]
mov edx, dword [edx + ebp*4]
mov esi, dword [eax + 0xd]
mov ecx, 0x1f
sub ecx, edi
mov edx, dword [edx + ecx*4]
mov ecx, dword [eax + 0x2d]
mov ecx, dword [ecx + edx*4]
mov esi, dword [esi + edx*4]
mov edx, ecx
sub edx, esi
inc edx
cmp edi, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x20], esi
jle 0x55807d
add edx, 0x20
add ecx, 0x20
mov dword [esp + 0x30], ecx
test edx, edx
jl 0x55808f
mov eax, dword [eax + 0x1d]
mov esi, dword [eax + esi*4]
mov eax, esi
mov ecx, edx
shl eax, cl
jmp 0x55809d
mov ecx, dword [eax + 0x1d]
mov esi, dword [ecx + esi*4]
mov ecx, edx
neg ecx
mov eax, esi
shr eax, cl
mov dword [esp + 0x74], eax
mov eax, 1
mov ecx, edi
shl eax, cl
not eax
and eax, dword [esp + 0x74]
and eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
cmp eax, 0x1f
jae 0x558126
shl esi, cl
lea ecx, [eax + 1]
and esi, dword [esp + 0x24]
shr esi, cl
mov ecx, dword [esp + 0x20]
add ecx, edi
mov eax, esi
cmp ecx, 0x20
jbe 0x55819e
mov ecx, dword [esp + 0x70]
mov ecx, dword [ecx + 0x35]
mov ebp, dword [ecx + ebp*4 - 2]
mov esi, ebp
and esi, 0xff0000
mov ecx, ebp
shr ecx, 0x10
or esi, ecx
mov ecx, ebp
shl ecx, 0x10
and ebp, 0xff00
or ecx, ebp
shl ecx, 8
shr esi, 8
or esi, ecx
mov ecx, 0x40
sub ecx, edi
sub ecx, dword [esp + 0x20]
shl esi, cl
mov ecx, edx
sub ecx, edi
add ecx, 0x20
shr esi, cl
or eax, esi
jmp 0x55819e
test ebp, ebp
jne 0x558138
mov ecx, edx
sub ecx, edi
add ecx, dword [esp + 0x20]
shr esi, cl
mov eax, esi
jmp 0x55819e
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x35]
mov ebp, dword [ecx + ebp*4 - 2]
mov esi, dword [esp + 0x20]
mov eax, ebp
and eax, 0xff0000
mov ecx, ebp
shr ecx, 0x10
or eax, ecx
mov ecx, ebp
shl ecx, 0x10
and ebp, 0xff00
or ecx, ebp
shl ecx, 8
shr eax, 8
or eax, ecx
lea ecx, [edi + esi]
cmp ecx, 0x20
je 0x558195
mov ecx, 0x40
sub ecx, edi
sub ecx, esi
mov esi, eax
shl esi, cl
mov ecx, edx
sub ecx, edi
add ecx, 0x20
shr esi, cl
mov ecx, 0x20
sub ecx, edx
shl eax, cl
or eax, esi
jmp 0x55819e
mov ecx, 0x20
sub ecx, edx
shl eax, cl
mov esi, dword [esp + 0x10]
mov ecx, edi
shr esi, cl
sub ecx, edx
shl esi, cl
or esi, eax
mov dword [esp + 0x10], esi
jmp 0x55829b
mov ecx, 0x20
sub ecx, dword [eax]
or esi, 0xffffffff
shr esi, cl
mov dword [esp + 0x10], 0
mov edx, edi
mov dword [esp + 0x18], esi
test ebp, ebp
jl 0x55829b
jmp 0x5581e4
mov esi, dword [esp + 0x18]
cmp edx, 0x20
jae 0x558254
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x29]
mov ecx, dword [ecx + ebp*4]
mov eax, 0x1f
sub eax, edx
lea eax, [ecx + eax*4]
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx]
mov eax, 1
shl eax, cl
test esi, eax
je 0x558235
mov ecx, edx
mov esi, 1
shl esi, cl
mov ecx, dword [esp + 0x24]
test ecx, esi
je 0x558227
or dword [esp + 0x10], eax
mov esi, dword [esp + 0x18]
mov ecx, eax
not ecx
and esi, ecx
mov dword [esp + 0x18], esi
cmp edx, edi
jne 0x558245
cmp dword [esp + 0x14], ebp
jne 0x558245
not eax
and dword [esp + 0x10], eax
test esi, esi
je 0x55829b
sub dword [esp + 0x74], 4
inc edx
cmp edx, 0x20
jb 0x558201
test ebp, ebp
je 0x558297
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x35]
mov eax, dword [ecx + ebp*4 - 2]
mov ecx, eax
and ecx, 0xff0000
mov esi, eax
shr esi, 0x10
or ecx, esi
mov esi, eax
shl esi, 0x10
and eax, 0xff00
or esi, eax
shr ecx, 8
shl esi, 8
or ecx, esi
xor edx, edx
sub ebp, 1
mov dword [esp + 0x24], ecx
jns 0x5581e0
jmp 0x55829b
or dword [esp + 0x10], esi
mov edx, 1
mov ecx, edi
shl edx, cl
or ebx, edx
test edi, edi
je 0x5582be
shr ebx, cl
or edx, 0xffffffff
shl ebx, cl
mov ecx, 0x20
sub ecx, edi
shl edx, cl
shr edx, cl
jmp 0x5582c0
xor edx, edx
cmp dword [esp + 0x10], 0
mov ebp, dword [esp + 0x70]
je 0x55832c
cmp byte [ebp + 8], 0
je 0x5582d8
mov ecx, dword [esp + 0x20]
dec ecx
jmp 0x5582db
mov ecx, dword [ebp]
mov eax, dword [esp + 0x14]
mov esi, 1
rol esi, cl
mov dword [esp + 0x74], esi
test ecx, ecx
jl 0x558330
mov edi, edi
mov edi, dword [esp + 0x10]
test edi, esi
je 0x55831f
mov esi, dword [ebp + 0x21]
mov eax, dword [esi + eax*4]
mov eax, dword [eax + ecx*4]
mov esi, eax
not esi
mov edi, edx
and eax, edx
and eax, dword [esp + 0x2c]
not edi
or esi, edi
and esi, ebx
or esi, eax
mov eax, dword [esp + 0x14]
mov ebx, esi
mov esi, dword [esp + 0x74]
dec ecx
ror esi, 1
mov dword [esp + 0x74], esi
test ecx, ecx
jge 0x5582f0
jmp 0x558330
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jge 0x55852d
mov esi, ebx
and esi, 0xff0000
mov edx, ebx
shr edx, 0x10
or esi, edx
mov edx, ebx
shl edx, 0x10
and ebx, 0xff00
or edx, ebx
shl edx, 8
shr esi, 8
or esi, edx
mov edx, dword [esp + 0x80]
mov dword [edx + eax*4 + 2], esi
inc eax
cmp eax, ecx
mov dword [esp + 0x14], eax
jg 0x5585bf
mov ecx, dword [esp + 0x78]
lea edi, [ecx + eax*4 + 2]
mov eax, edx
sub eax, ecx
mov dword [esp + 0x68], eax
mov eax, 0xfffffffe
sub eax, ecx
mov dword [esp + 0x74], eax
xor esi, esi
cmp dword [esp + 0x10], esi
je 0x55845c
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x14], eax
jge 0x5583d0
mov eax, dword [edi]
mov edx, eax
mov ecx, eax
shr ecx, 0x10
and edx, 0xff0000
or edx, ecx
mov ecx, eax
shl ecx, 0x10
and eax, 0xff00
or ecx, eax
shr edx, 8
shl ecx, 8
or edx, ecx
jmp 0x558419
movzx eax, word [ecx]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
mov ecx, dword [eax + ecx - 2]
mov edx, ecx
mov ebx, ecx
shr ebx, 0x10
and edx, 0xff0000
or edx, ebx
mov ebx, ecx
and ecx, 0xff00
shl ebx, 0x10
or ebx, ecx
and eax, 3
mov ecx, 4
sub ecx, eax
add ecx, ecx
shr edx, 8
shl ebx, 8
add ecx, ecx
or edx, ebx
add ecx, ecx
shl edx, cl
cmp byte [ebp + 8], 0
je 0x558426
mov ecx, dword [esp + 0x20]
dec ecx
jmp 0x558429
mov ecx, dword [ebp]
mov eax, 1
rol eax, cl
test ecx, ecx
jl 0x558458
mov ebx, dword [esp + 0x10]
test ebx, eax
je 0x558451
mov ebx, dword [ebp + 0x21]
add ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0x70]
mov ebx, dword [ebx + edi]
mov ebx, dword [ebx + ecx*4]
and ebx, edx
or esi, ebx
dec ecx
ror eax, 1
test ecx, ecx
jge 0x558434
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x3c]
jge 0x5584ad
mov edx, esi
mov ebx, esi
shr ebx, 0x10
and edx, 0xff0000
or edx, ebx
mov ebx, esi
shl ebx, 0x10
and esi, 0xff00
or ebx, esi
mov esi, dword [esp + 0x68]
shr edx, 8
shl ebx, 8
or edx, ebx
inc eax
mov dword [esi + edi], edx
add edi, 4
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
jle 0x558393
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret
movzx eax, word [ecx]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
mov edx, eax
and edx, 3
add edx, edx
add edx, edx
add edx, edx
je 0x55850c
mov ecx, dword [esp + 0x80]
mov ecx, dword [eax + ecx - 2]
mov edi, ecx
mov ebx, ecx
shr ebx, 0x10
and edi, 0xff0000
or edi, ebx
mov ebx, ecx
shl ebx, 0x10
and ecx, 0xff00
or ebx, ecx
shl ebx, 8
shr edi, 8
or edi, ebx
or ebx, 0xffffffff
mov ecx, edx
shl ebx, cl
mov ecx, 0x20
sub ecx, edx
shr esi, cl
and edi, ebx
or esi, edi
mov edx, esi
mov ecx, esi
shr ecx, 0x10
and edx, 0xff0000
or edx, ecx
mov ecx, esi
shl ecx, 0x10
and esi, 0xff00
or ecx, esi
jmp 0x5585ac
mov edx, dword [esp + 0x78]
movzx eax, word [edx]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
mov edx, eax
and edx, 3
add edx, edx
add edx, edx
add edx, edx
je 0x558590
mov ecx, dword [esp + 0x80]
mov ecx, dword [eax + ecx - 2]
mov esi, ecx
mov edi, ecx
shr edi, 0x10
and esi, 0xff0000
or esi, edi
mov edi, ecx
shl edi, 0x10
and ecx, 0xff00
or edi, ecx
shl edi, 8
shr esi, 8
or esi, edi
or edi, 0xffffffff
mov ecx, edx
shl edi, cl
mov ecx, 0x20
sub ecx, edx
shr ebx, cl
and esi, edi
or ebx, esi
mov edx, ebx
mov ecx, ebx
shr ecx, 0x10
and edx, 0xff0000
or edx, ecx
mov ecx, ebx
shl ecx, 0x10
and ebx, 0xff00
or ecx, ebx
shl ecx, 8
shr edx, 8
or edx, ecx
mov ecx, dword [esp + 0x80]
mov dword [eax + ecx - 2], edx
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret