Function at 0x577430
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x154
mov eax, dword [0x93500c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 0x14]
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x12c], ecx
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x13c], ecx
mov ecx, 0x14
mov eax, dword [esi + 0x358]
mov ebx, dword [esi + 0x364]
push edi
mov edi, dword [esi + 0x368]
mov dword [ebp - 0x150], edx
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x154], esi
mov esi, dword [esi + 0x36c]
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x128], edi
mov dword [ebp - 0x138], ebx
mov dword [ebp - 0x144], esi
cmp edx, ecx
jbe 0x5774cc
inc ecx
movzx eax, cx
cmp eax, edx
jb 0x5774a7
lea eax, [edx - 0x14]
movzx ecx, ax
lea edi, [esi + 0x28]
shr ecx, 1
mov eax, 0x140014
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [ebp - 0x128]
lea eax, [edx - 0x14]
mov byte [ebp - 0x101], 0
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x118], 0
nop word [eax + eax]
xor edx, edx
mov dword [ebp - 0x10c], 0x14
mov dword [ebp - 0x11c], edx
cmp eax, 0x14
jbe 0x5775ab
mov eax, dword [ebp + 0xc]
mov esi, 0x14
add eax, 0xffffffec
mov dword [ebp - 0x140], eax
nop dword [eax]
mov eax, dword [ebp - 0x144]
movzx ecx, word [eax + esi*2]
lea eax, [eax + esi*2]
mov dword [ebp - 0x134], eax
mov eax, ecx
cmp eax, dword [ebp - 0x140]
jae 0x577589
nop dword [eax]
imul eax, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov bl, byte [ebp - 0x101]
add eax, esi
cmp byte [eax + edi], bl
mov ebx, dword [ebp - 0x138]
mov edi, dword [ebp - 0x128]
ja 0x57756e
inc ecx
movzx eax, cx
cmp eax, dword [ebp - 0x140]
jb 0x577540
jmp 0x577589
mov esi, dword [ebp - 0x10c]
movzx eax, dx
inc edx
mov word [edi + eax*2], cx
mov word [ebx + eax*2], si
mov eax, dword [ebp - 0x134]
mov word [eax], cx
mov eax, dword [ebp - 0x10c]
inc eax
movzx esi, ax
mov dword [ebp - 0x10c], eax
cmp esi, dword [ebp - 0x114]
jb 0x577520
mov dword [ebp - 0x11c], edx
xor eax, eax
xor esi, esi
xor ecx, ecx
mov dword [ebp - 0x108], esi
mov dword [ebp - 0x124], ecx
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x134], eax
cmp ax, dx
jae 0x57770d
movzx ecx, dx
mov dword [ebp - 0x134], ecx
nop dword [eax + eax]
inc eax
or ecx, 0xffffffff
movzx esi, ax
mov dword [ebp - 0x130], ecx
cmp si, dx
jae 0x57763f
movzx edx, si
movzx eax, word [ebx + edx*2 - 2]
movzx ecx, word [ebx + edx*2]
sub ecx, eax
cmp ecx, 1
jg 0x577633
movzx eax, word [edi + edx*2 - 2]
movzx ecx, word [edi + edx*2]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x11c]
cmp eax, 1
jg 0x577639
movzx ecx, si
inc esi
mov dword [ebp - 0x130], ecx
cmp si, dx
jb 0x5775f2
jmp 0x57763f
mov edx, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x130]
movsx eax, cx
cmp eax, dword [ebp - 0x134]
jge 0x5776d5
cmp cx, 0xffff
je 0x5776d5
mov esi, dword [ebp - 0x120]
add eax, 0xfffffffb
mov dword [ebp - 0x10c], eax
movzx eax, si
cmp dword [ebp - 0x10c], eax
jle 0x5776d5
cmp eax, dword [ebp - 0x10c]
jge 0x5776ca
mov ebx, dword [ebp - 0x108]
movzx esi, si
movzx ecx, word [edi + eax*2 + 0xa]
inc esi
movzx eax, word [edi + eax*2]
sub eax, ecx
cdq
mov ecx, eax
movzx eax, bx
xor ecx, edx
inc ebx
sub ecx, edx
mov edx, dword [ebp - 0x148]
mov word [edx + eax*2], cx
movzx eax, cx
add dword [ebp - 0x124], eax
movzx eax, si
cmp eax, dword [ebp - 0x10c]
jl 0x577683
mov ecx, dword [ebp - 0x130]
mov dword [ebp - 0x108], ebx
mov ebx, dword [ebp - 0x138]
mov edx, dword [ebp - 0x11c]
movzx eax, cx
jmp 0x5776db
mov eax, dword [ebp - 0x120]
inc eax
mov dword [ebp - 0x120], eax
cmp ax, dx
jb 0x5775e0
mov esi, dword [ebp - 0x108]
test si, si
je 0x577707
mov eax, dword [ebp - 0x124]
xor edx, edx
movzx ecx, si
div ecx
mov ecx, eax
jmp 0x57770d
mov ecx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x118]
mov dword [ebp + eax - 0x100], 0
xor eax, eax
cmp ax, si
jae 0x57778a
mov edx, dword [ebp - 0x148]
mov dword [ebp - 0x108], eax
mov ebx, eax
movzx eax, si
mov dword [ebp - 0x134], eax
mov edi, eax
nop
movzx eax, word [edx]
lea edx, [edx + 2]
sub eax, ecx
imul eax, eax
add ebx, eax
sub edi, 1
jne 0x577740
mov ecx, dword [ebp - 0x118]
mov eax, ebx
mov edi, dword [ebp - 0x128]
test si, si
mov dword [ebp - 0x108], ebx
mov esi, ecx
mov ebx, dword [ebp - 0x138]
mov dword [ebp + ecx - 0x100], eax
je 0x577790
cdq
idiv dword [ebp - 0x134]
mov dword [ebp + esi - 0x100], eax
jmp 0x577790
mov esi, dword [ebp - 0x118]
mov ecx, dword [ebp + esi - 0x100]
mov eax, ecx
neg eax
cmp ecx, 0x4e20
mov ecx, dword [ebp - 0x110]
mov dword [ebp + esi - 0x54], eax
jle 0x5777cd
test ecx, ecx
jne 0x5777cd
mov al, byte [ebp - 0x101]
mov ecx, 1
movzx edx, al
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x12c], edx
jmp 0x5777d3
mov edx, dword [ebp - 0x12c]
mov al, byte [ebp - 0x101]
add esi, 4
inc al
mov dword [ebp - 0x118], esi
mov byte [ebp - 0x101], al
cmp al, 0x14
mov eax, dword [ebp - 0x114]
jb 0x5774f0
test ecx, ecx
je 0x577826
movzx eax, dx
movzx edx, dx
cmp edx, 0x14
jge 0x577826
inc eax
cmp ax, 0x14
jb 0x577807
mov eax, 0x14
lea edi, [ebp - 0x58]
sub eax, dword [ebp - 0x12c]
lea edi, [edi + edx*4]
movzx ecx, ax
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005772e0
add esp, 8
test al, al
jne 0x577867
lea ecx, [ebp - 0x54]
mov edx, 0x14
mov eax, dword [ecx]
lea ecx, [ecx + 4]
neg eax
mov dword [ecx - 4], eax
sub edx, 1
jne 0x577845
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005772e0
add esp, 8
cmp al, 1
je 0x577888
cmp dword [ebp - 0x110], 1
je 0x577888
mov ecx, dword [ebp - 0x94]
mov esi, dword [ebp - 0xa4]
mov dword [ebp - 0x134], ecx
jmp 0x577894
mov esi, dword [ebp - 0xa8]
mov dword [ebp - 0x134], esi
mov dword [ebp - 0x140], esi
mov ecx, 1
cmp esi, 0x11
jle 0x577982
cmp al, 2
jb 0x577982
movzx eax, al
mov edx, ecx
mov dword [ebp - 0x114], 0x98967f
mov dword [ebp - 0x140], edx
mov word [ebp - 0x102], ax
cmp cx, ax
ja 0x57796f
nop word [eax + eax]
movzx eax, dx
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x108], eax
mov esi, dword [ebp + eax*4 - 0x58]
mov ecx, dword [ebp + eax*4 - 0x5c]
mov edi, dword [ebp + eax*4 - 0x54]
mov eax, esi
sub eax, edi
cdq
mov ebx, eax
mov eax, ecx
xor ebx, edx
sub eax, esi
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
cmp ecx, esi
mov eax, esi
cmovl eax, ecx
cmp esi, edi
mov ecx, dword [ebp - 0x114]
cmovl edi, esi
cmp eax, edi
cmovl edi, eax
imul eax, ebx, 0x64
cdq
idiv edi
mov edx, dword [ebp - 0x13c]
cmp eax, ecx
cmovl edx, dword [ebp - 0x108]
mov dword [ebp - 0x13c], edx
mov edx, dword [ebp - 0x140]
inc edx
cmp eax, ecx
mov dword [ebp - 0x140], edx
cmovge ebx, ecx
mov dword [ebp - 0x114], ebx
cmp dx, word [ebp - 0x102]
jbe 0x5778e0
mov ebx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x13c]
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x140], eax
mov edx, dword [ebp + 0xc]
mov ecx, 3
cmp edx, ecx
jbe 0x5779b5
nop
inc ecx
movzx eax, cx
cmp eax, edx
jb 0x577990
mov edi, dword [ebp - 0x144]
lea eax, [edx - 3]
movzx ecx, ax
add edi, 6
shr ecx, 1
mov eax, 0x30003
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor ecx, ecx
lea eax, [edx - 3]
mov dword [ebp - 0x10c], ecx
mov byte [ebp - 0x101], cl
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x124], ecx
xor edi, edi
mov dword [ebp - 0x108], 3
mov dword [ebp - 0x118], edi
cmp eax, 3
jb 0x577a84
mov eax, dword [ebp + 0x10]
mov edx, 3
add eax, 0xfffffffd
mov dword [ebp - 0x114], eax
nop
mov eax, dword [ebp - 0x144]
movzx ecx, word [eax + edx*2]
lea eax, [eax + edx*2]
mov dword [ebp - 0x110], eax
mov eax, ecx
cmp eax, dword [ebp - 0x114]
jae 0x577a66
imul edx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
add eax, edx
mov bl, byte [ebp - 0x101]
cmp byte [eax + esi], bl
mov ebx, dword [ebp - 0x138]
mov esi, dword [ebp - 0x128]
ja 0x577a4b
inc ecx
movzx eax, cx
cmp eax, dword [ebp - 0x114]
jb 0x577a21
jmp 0x577a66
mov edx, dword [ebp - 0x108]
movzx eax, di
inc edi
mov word [esi + eax*2], dx
mov word [ebx + eax*2], cx
mov eax, dword [ebp - 0x110]
mov word [eax], cx
mov eax, dword [ebp - 0x108]
inc eax
movzx edx, ax
mov dword [ebp - 0x108], eax
cmp edx, dword [ebp - 0x130]
jbe 0x577a00
mov dword [ebp - 0x118], edi
xor edi, edi
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x120], edi
xor eax, eax
mov dword [ebp - 0x11c], edx
mov dword [ebp - 0x108], ecx
cmp ax, word [ebp - 0x118]
jae 0x577bd7
nop dword [eax + eax]
or eax, 0xffffffff
mov dword [ebp - 0x110], eax
lea eax, [ecx + 1]
movzx esi, ax
cmp si, word [ebp - 0x118]
jae 0x577bb3
nop dword [eax]
movzx edi, si
movzx ecx, word [ebx + edi*2 - 2]
movzx eax, word [ebx + edi*2]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jg 0x577b13
mov ecx, dword [ebp - 0x128]
movzx eax, word [ecx + edi*2 - 2]
movzx ecx, word [ecx + edi*2]
sub ecx, eax
cmp ecx, 1
jg 0x577b13
movzx eax, si
inc esi
mov dword [ebp - 0x110], eax
cmp si, word [ebp - 0x118]
jb 0x577ad0
jmp 0x577b19
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
mov edi, dword [ebp - 0x120]
cmp ax, 0xffff
je 0x577bad
cwde
lea edx, [eax - 5]
movzx eax, cx
mov dword [ebp - 0x114], edx
cmp edx, eax
jle 0x577bad
movzx esi, cx
cmp eax, edx
jge 0x577b9c
nop dword [eax + eax]
movzx ecx, word [ebx + eax*2 + 0xa]
inc esi
movzx eax, word [ebx + eax*2]
sub eax, ecx
movzx ecx, di
cdq
inc edi
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x148]
mov word [edx + ecx*2], ax
mov edx, dword [ebp - 0x11c]
movzx eax, ax
add edx, eax
movzx eax, si
mov dword [ebp - 0x11c], edx
cmp eax, dword [ebp - 0x114]
jl 0x577b50
mov eax, dword [ebp - 0x110]
mov dword [ebp - 0x120], edi
movzx ecx, ax
jmp 0x577bb3
mov eax, dword [ebp - 0x110]
mov edx, dword [ebp - 0x11c]
movzx ecx, ax
jmp 0x577bb3
mov edx, dword [ebp - 0x11c]
inc ecx
mov dword [ebp - 0x108], ecx
cmp cx, word [ebp - 0x118]
jb 0x577ab0
test di, di
je 0x577bd7
mov eax, edx
movzx ecx, di
xor edx, edx
div ecx
mov edx, eax
mov eax, dword [ebp - 0x124]
mov dword [ebp + eax - 0x100], 0
xor eax, eax
cmp ax, di
jae 0x577c58
mov ecx, dword [ebp - 0x148]
mov dword [ebp - 0x108], eax
mov ebx, eax
movzx eax, di
mov dword [ebp - 0x114], eax
mov esi, eax
nop dword [eax]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
sub eax, edx
imul eax, eax
add ebx, eax
sub esi, 1
jne 0x577c10
mov edx, dword [ebp - 0x124]
mov eax, ebx
mov dword [ebp - 0x108], ebx
mov ebx, dword [ebp - 0x138]
mov dword [ebp + edx - 0x100], eax
test di, di
je 0x577c5e
cdq
idiv dword [ebp - 0x114]
mov edx, dword [ebp - 0x124]
mov dword [ebp + edx - 0x100], eax
jmp 0x577c5e
mov edx, dword [ebp - 0x124]
mov ecx, dword [ebp + edx - 0x100]
mov eax, ecx
neg eax
cmp ecx, 0x4e20
mov ecx, dword [ebp - 0x10c]
mov dword [ebp + edx - 0x54], eax
jle 0x577c9b
test ecx, ecx
jne 0x577c9b
mov al, byte [ebp - 0x101]
mov ecx, 1
movzx edi, al
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0x12c], edi
jmp 0x577ca1
mov edi, dword [ebp - 0x12c]
mov al, byte [ebp - 0x101]
add edx, 4
inc al
mov dword [ebp - 0x124], edx
mov byte [ebp - 0x101], al
cmp al, 0x14
mov eax, dword [ebp - 0x130]
jb 0x5779d2
test ecx, ecx
je 0x577cf0
movzx edx, di
movzx eax, di
cmp edx, 0x14
jge 0x577cf0
inc eax
cmp ax, 0x14
jb 0x577cd5
mov eax, 0x14
sub eax, edi
lea edi, [ebp - 0x58]
movzx ecx, ax
lea edi, [edi + edx*4]
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005772e0
add esp, 8
test al, al
jne 0x577d32
lea ecx, [ebp - 0x54]
mov edx, 0x14
nop
mov eax, dword [ecx]
lea ecx, [ecx + 4]
neg eax
mov dword [ecx - 4], eax
sub edx, 1
jne 0x577d10
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005772e0
add esp, 8
cmp al, 1
je 0x577d53
cmp dword [ebp - 0x10c], 1
je 0x577d53
mov edx, dword [ebp - 0x94]
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0x150], edx
jmp 0x577d59
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x114], ecx
cmp ecx, 0x11
jle 0x577e3c
cmp al, 2
jb 0x577e3c
mov edx, 1
movzx eax, al
mov ecx, edx
mov dword [ebp - 0x108], 0x98967f
mov dword [ebp - 0x114], edx
mov word [ebp - 0x102], ax
cmp cx, ax
ja 0x577e29
nop word [eax + eax]
movzx eax, dx
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x10c], eax
mov esi, dword [ebp + eax*4 - 0x58]
mov ecx, dword [ebp + eax*4 - 0x5c]
mov edi, dword [ebp + eax*4 - 0x54]
mov eax, esi
sub eax, edi
cdq
mov ebx, eax
mov eax, ecx
xor ebx, edx
sub eax, esi
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
cmp ecx, esi
mov eax, esi
cmovl eax, ecx
cmp esi, edi
mov ecx, dword [ebp - 0x108]
cmovl edi, esi
cmp eax, edi
cmovl edi, eax
imul eax, ebx, 0x64
cdq
idiv edi
mov edx, dword [ebp - 0x13c]
cmp eax, ecx
cmovl edx, dword [ebp - 0x10c]
mov dword [ebp - 0x13c], edx
mov edx, dword [ebp - 0x114]
inc edx
cmp eax, ecx
mov dword [ebp - 0x114], edx
cmovge ebx, ecx
mov dword [ebp - 0x108], ebx
cmp dx, word [ebp - 0x102]
jbe 0x577da0
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x114], ecx
mov esi, dword [ebp + 0xc]
mov ecx, 3
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x144]
cmp esi, ecx
jbe 0x577e98
mov eax, dword [ebp - 0x130]
cmp eax, 0x10
jb 0x577e98
and eax, 0xf
mov edx, esi
sub edx, eax
movsx eax, bx
movd xmm0, eax
mov eax, ecx
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
psubw xmm0, xmmword [0x6a2e90]
nop dword [eax]
movups xmmword [edi + eax*2], xmm0
lea eax, [ecx + 8]
add ecx, 0x10
movzx eax, ax
movups xmmword [edi + eax*2], xmm0
movzx eax, cx
cmp eax, edx
jb 0x577e80
movzx eax, cx
cmp eax, esi
jae 0x577eae
lea edx, [ebx - 3]
inc ecx
mov word [edi + eax*2], dx
movzx eax, cx
cmp eax, esi
jb 0x577ea2
mov ebx, dword [ebp - 0x138]
xor eax, eax
mov dword [ebp - 0x110], eax
mov byte [ebp - 0x101], al
mov dword [ebp - 0x118], eax
nop dword [eax + eax]
xor esi, esi
mov edi, 3
mov dword [ebp - 0x11c], esi
cmp dword [ebp - 0x130], edi
jbe 0x577f6a
mov edx, edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x144]
movzx ecx, word [eax + edx*2]
lea eax, [eax + edx*2]
mov dword [ebp - 0x108], eax
cmp ecx, 3
jbe 0x577f5e
imul edx, dword [ebp + 0x10]
nop dword [eax]
mov esi, dword [ebp + 8]
mov bl, byte [ebp - 0x101]
movzx eax, cx
add eax, edx
cmp byte [eax + esi], bl
mov ebx, dword [ebp - 0x138]
mov esi, dword [ebp - 0x11c]
ja 0x577f3d
add ecx, 0xffff
cmp cx, 3
ja 0x577f10
jmp 0x577f5e
mov edx, dword [ebp - 0x128]
movzx eax, si
inc esi
mov dword [ebp - 0x11c], esi
mov word [edx + eax*2], di
mov word [ebx + eax*2], cx
mov eax, dword [ebp - 0x108]
mov word [eax], cx
inc edi
movzx edx, di
cmp edx, dword [ebp - 0x130]
jb 0x577ef0
xor edi, edi
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x124], edi
xor eax, eax
mov dword [ebp - 0x120], edx
mov dword [ebp - 0x108], ecx
cmp ax, si
jae 0x5780b7
nop dword [eax]
or eax, 0xffffffff
mov dword [ebp - 0x10c], eax
lea eax, [ecx + 1]
movzx esi, ax
cmp si, word [ebp - 0x11c]
jae 0x578093
nop dword [eax]
movzx edi, si
movzx ecx, word [ebx + edi*2 - 2]
movzx eax, word [ebx + edi*2]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jg 0x577ff3
mov ecx, dword [ebp - 0x128]
movzx eax, word [ecx + edi*2 - 2]
movzx ecx, word [ecx + edi*2]
sub ecx, eax
cmp ecx, 1
jg 0x577ff3
movzx eax, si
inc esi
mov dword [ebp - 0x10c], eax
cmp si, word [ebp - 0x11c]
jb 0x577fb0
jmp 0x577ff9
mov eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0x108]
mov edi, dword [ebp - 0x124]
cmp ax, 0xffff
je 0x57808d
cwde
lea edx, [eax - 5]
movzx eax, cx
mov dword [ebp - 0x14c], edx
cmp edx, eax
jle 0x57808d
movzx esi, cx
cmp eax, edx
jge 0x57807c
nop dword [eax + eax]
movzx ecx, word [ebx + eax*2 + 0xa]
inc esi
movzx eax, word [ebx + eax*2]
sub eax, ecx
movzx ecx, di
cdq
inc edi
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x148]
mov word [edx + ecx*2], ax
mov edx, dword [ebp - 0x120]
movzx eax, ax
add edx, eax
movzx eax, si
mov dword [ebp - 0x120], edx
cmp eax, dword [ebp - 0x14c]
jl 0x578030
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0x124], edi
movzx ecx, ax
jmp 0x578093
mov eax, dword [ebp - 0x10c]
mov edx, dword [ebp - 0x120]
movzx ecx, ax
jmp 0x578093
mov edx, dword [ebp - 0x120]
inc ecx
mov dword [ebp - 0x108], ecx
cmp cx, word [ebp - 0x11c]
jb 0x577f90
test di, di
je 0x5780b7
mov eax, edx
movzx ecx, di
xor edx, edx
div ecx
mov edx, eax
mov eax, dword [ebp - 0x118]
mov dword [ebp + eax - 0x100], 0
xor eax, eax
cmp ax, di
jae 0x578124
mov ecx, dword [ebp - 0x148]
xor esi, esi
movzx eax, di
mov dword [ebp - 0x14c], eax
mov ebx, eax
movzx eax, word [ecx]
lea ecx, [ecx + 2]
sub eax, edx
imul eax, eax
add esi, eax
sub ebx, 1
jne 0x5780e2
mov edx, dword [ebp - 0x118]
mov ebx, dword [ebp - 0x138]
mov dword [ebp + edx - 0x100], esi
test di, di
je 0x57812a
mov eax, esi
cdq
idiv dword [ebp - 0x14c]
mov edx, dword [ebp - 0x118]
mov dword [ebp + edx - 0x100], eax
jmp 0x57812a
mov edx, dword [ebp - 0x118]
mov ecx, dword [ebp + edx - 0x100]
mov eax, ecx
neg eax
cmp ecx, 0x4e20
mov ecx, dword [ebp - 0x110]
mov dword [ebp + edx - 0x54], eax
jle 0x578167
test ecx, ecx
jne 0x578167
mov al, byte [ebp - 0x101]
mov ecx, 1
movzx esi, al
mov dword [ebp - 0x110], ecx
mov dword [ebp - 0x12c], esi
jmp 0x57816d
mov esi, dword [ebp - 0x12c]
mov al, byte [ebp - 0x101]
add edx, 4
inc al
mov dword [ebp - 0x118], edx
mov byte [ebp - 0x101], al
cmp al, 0x14
jb 0x577ed0
test ecx, ecx
je 0x5781bb
movzx edx, si
movzx eax, si
cmp edx, 0x14
jge 0x5781bb
nop dword [eax + eax]
inc eax
cmp ax, 0x14
jb 0x5781a0
mov eax, 0x14
lea edi, [ebp - 0x58]
sub eax, esi
lea edi, [edi + edx*4]
movzx ecx, ax
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005772e0
mov cl, al
add esp, 8
test cl, cl
jne 0x578203
lea ecx, [ebp - 0x54]
mov edx, 0x14
nop dword [eax]
mov eax, dword [ecx]
neg eax
mov dword [ecx], eax
add ecx, 4
sub edx, 1
jne 0x5781e0
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.005772e0
add esp, 8
mov cl, al
cmp cl, 1
je 0x578225
cmp dword [ebp - 0x110], 1
je 0x578225
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0x110], edx
jmp 0x578231
mov eax, dword [ebp - 0xa8]
mov dword [ebp - 0x110], eax
cmp eax, 0x11
jle 0x578306
cmp cl, 2
jb 0x578306
mov edx, 1
movzx eax, cl
mov ecx, edx
mov dword [ebp - 0x10c], 0x98967f
mov dword [ebp - 0x108], edx
mov word [ebp - 0x102], ax
cmp cx, ax
ja 0x5782f9
nop dword [eax]
movzx eax, dx
mov eax, dword [ebp + eax*4 - 0xac]
mov dword [ebp - 0x14c], eax
mov esi, dword [ebp + eax*4 - 0x58]
mov ecx, dword [ebp + eax*4 - 0x5c]
mov edi, dword [ebp + eax*4 - 0x54]
mov eax, esi
sub eax, edi
cdq
mov ebx, eax
mov eax, ecx
xor ebx, edx
sub eax, esi
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
cmp ecx, esi
mov eax, esi
cmovl eax, ecx
cmp esi, edi
mov ecx, dword [ebp - 0x10c]
cmovl edi, esi
cmp eax, edi
cmovl edi, eax
imul eax, ebx, 0x64
cdq
idiv edi
mov edx, dword [ebp - 0x13c]
cmp eax, ecx
cmovl edx, dword [ebp - 0x14c]
mov dword [ebp - 0x13c], edx
mov edx, dword [ebp - 0x108]
inc edx
cmp eax, ecx
mov dword [ebp - 0x108], edx
cmovge ebx, ecx
mov dword [ebp - 0x10c], ebx
cmp dx, word [ebp - 0x102]
jbe 0x578270
mov eax, dword [ebp - 0x13c]
mov eax, dword [ebp + eax*4 - 0xac]
mov edx, dword [ebp - 0x114]
cmp dword [ebp - 0x140], edx
mov ebx, dword [ebp - 0x150]
cmovg edx, dword [ebp - 0x140]
cmp dword [ebp - 0x134], ebx
mov ecx, dword [ebp - 0x110]
cmovg ebx, dword [ebp - 0x134]
mov esi, dword [ebp - 0x154]
cmp ebx, ecx
pop edi
cmovg ecx, ebx
cmp edx, eax
mov dword [esi + 0x34c], ecx
cmovg eax, edx
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.0052bbde
mov esp, ebp
pop ebp
ret