Function at 0x414920
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
push ebx
push esi
mov esi, dword [ecx + 0x85b8]
push edi
mov dword [ebp - 0x30], ecx
mov ebx, dword [esi]
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x4c], edi
test ebx, ebx
je 0x414946
mov edx, dword [ecx + 8]
jmp 0x41494a
mov edx, dword [esi + 0x24]
inc edx
mov eax, dword [ecx + 0x8614]
dec eax
shl eax, 4
sub edx, eax
mov dword [ebp - 8], eax
cmp edx, 0x10
jae 0x414977
test ebx, ebx
je 0x41496c
mov edx, dword [ecx + 8]
sub edx, eax
mov dword [ebp - 0x24], edx
jmp 0x41497e
mov edx, dword [esi + 0x24]
inc edx
sub edx, eax
mov dword [ebp - 0x24], edx
jmp 0x41497e
mov dword [ebp - 0x24], 0x10
test ebx, ebx
je 0x414987
mov ebx, dword [ecx + 4]
jmp 0x41498b
mov ebx, dword [esi + 0x1c]
inc ebx
mov edx, dword [esi + 0x20]
mov dword [ebp - 0x34], ebx
cmp eax, edx
jbe 0x414999
xor edx, edx
jmp 0x41499c
and edx, 0xf
lea eax, [edi - 1]
add eax, edx
xor edx, edx
div edi
xor edx, edx
imul eax, edi
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0x18]
dec eax
add eax, edi
div edi
imul eax, edi
mov dword [ebp - 0x18], eax
mov eax, dword [ecx + 0x8550]
mov dword [ebp - 0x1c], eax
test eax, eax
jne 0x4149cc
xor edx, edx
jmp 0x4149cf
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x60], eax
mov eax, dword [ecx + 0x64]
mov dword [ebp - 4], eax
mov eax, dword [ecx + 0x1c]
neg eax
mov dword [ebp - 0x2c], edx
mov edx, 2
sbb eax, eax
xor esi, esi
and eax, 2
mov dword [ebp - 0x20], esi
sub edx, eax
mov dword [ebp - 0x80], eax
mov al, byte [ecx + 0x808c]
mov byte [ebp - 0x38], al
mov al, byte [ecx + 0x808d]
mov byte [ebp - 0x3d], al
mov eax, dword [ecx + 0x86dc]
mov dword [ebp - 0x70], eax
mov eax, dword [ecx + 0x86e0]
mov dword [ebp - 0x6c], eax
mov eax, dword [ecx + 0x86e4]
mov ecx, dword [ecx + 0x85b8]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x84], edx
xor edx, edx
mov eax, dword [ecx + 0x28]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 8]
div edi
mov ecx, dword [ecx + 0x2c]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x50], eax
cmp edi, 0x10
jb 0x414a70
mov eax, dword [ebp - 4]
test eax, eax
jne 0x414a5b
mov dword [ebp - 0xc], 0x10
jmp 0x414a91
cmp eax, 1
mov ecx, 0x22
mov edx, 0x17
cmove ecx, edx
mov dword [ebp - 0xc], ecx
jmp 0x414a91
cmp edi, 4
jb 0x414a8a
cmp dword [ebp - 4], esi
mov ecx, 0x5d
mov eax, 0x40
cmove ecx, eax
mov dword [ebp - 0xc], ecx
jmp 0x414a91
mov dword [ebp - 0xc], 0x102
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x855c]
mov ecx, eax
neg ecx
sbb ecx, ecx
and ecx, 3
add ecx, 8
mov dword [ebp - 0x10], ecx
test eax, eax
je 0x414acd
cmp edi, 0x10
jb 0x414acd
mov eax, dword [ebp - 0x1c]
cmp eax, 1
je 0x414ac6
cmp eax, 2
je 0x414ac6
mov eax, 1
jmp 0x414acf
mov eax, 2
jmp 0x414acf
xor eax, eax
sub ecx, eax
mov dword [ebp - 0x5c], ecx
cmp edi, 1
jbe 0x414aea
mov eax, 1
mov edi, edi
rol eax, 1
inc esi
cmp eax, edi
jb 0x414ae0
mov dword [ebp - 0x20], esi
mov eax, 1
mov ecx, esi
shl eax, cl
cmp edi, eax
je 0x414b0e
push 0x795
push str.....libjxrlib_strdec.c
push str.tScale___size_t__1U____nBits_
call fcn.005bb431
add esp, 0xc
mov ecx, dword [ebp - 0x30]
cmp dword [ecx + 0x40], 4
jge 0x414b1c
mov eax, dword [ecx + 0x28]
jmp 0x414b1f
mov eax, dword [ecx + 0x30]
mov ebx, dword [ecx + 0x85b8]
xor edx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x28]
mov dword [ebp - 0x7c], eax
div dword [ebx + 0xc]
mov edx, dword [ebp - 4]
push eax
call fcn.0040b120
mov ebx, dword [ebp - 0x34]
add esp, 4
test eax, eax
jne 0x41649a
mov eax, dword [ecx + 0x8614]
xor edx, edx
dec eax
shl eax, 4
div edi
test edx, edx
jne case.default.0x4164db
mov eax, dword [ecx + 0x85b8]
mov edx, dword [ecx + 0x8614]
shl edx, 4
cmp edx, dword [eax + 0x20]
jbe case.default.0x4164db
mov eax, dword [eax + 0x24]
add eax, 0x10
cmp edx, eax
ja case.default.0x4164db
mov edx, dword [ebp - 0x1c]
cmp edx, 2
je 0x414b9a
cmp edx, 1
jne 0x414df2
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x414df5
mov eax, dword [ecx + 0x87dc]
mov esi, edi
mov dword [ebp - 0x78], eax
mov eax, dword [ecx + 0x87e0]
xor ecx, ecx
mov dword [ebp - 0x68], eax
xor eax, eax
shl esi, 4
mov dword [ebp - 4], eax
mov dword [ebp - 8], ecx
mov dword [ebp - 0x64], esi
lea esp, [esp]
xor esi, esi
test ebx, ebx
je 0x414c50
cmp edx, 2
mov edx, esi
jne 0x414bf4
mov eax, esi
and edx, 0xfffffff0
shr eax, 1
and eax, 7
movzx eax, byte [eax + ecx + 0x629b70]
lea eax, [eax + edx*8]
jmp 0x414c0e
mov ecx, esi
and edx, 0xfffffff0
shr ecx, 1
and ecx, 7
shr eax, 1
movzx eax, byte [ecx + eax*8 + 0x629c70]
mov ecx, dword [ebp - 8]
lea eax, [eax + edx*4]
mov edi, dword [ebp - 0x78]
mov dword [ebp - 0x14], eax
mov eax, esi
and eax, 0xf
shl edx, 4
movzx ecx, byte [eax + ecx + 0x629b70]
mov eax, dword [ebp - 0x6c]
add ecx, edx
mov edx, dword [ebp - 0x14]
mov eax, dword [eax + edx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x4c]
add esi, edi
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 0x68]
mov dword [edx + ecx*4], eax
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x1c]
cmp esi, ebx
jb 0x414bd6
add ecx, dword [ebp - 0x64]
add eax, edi
mov dword [ebp - 4], eax
mov dword [ebp - 8], ecx
cmp eax, 0x10
jb 0x414bd0
cmp edi, 4
jne 0x414de0
cmp edx, 1
jne 0x414d0f
xor eax, eax
mov dword [ebp - 0x14], eax
test ebx, ebx
je 0x414d0f
mov ecx, dword [ebp - 0x78]
mov ebx, eax
mov edi, eax
and ebx, 0xf
and edi, 0xfffffff0
mov dword [ebp - 0x64], ebx
shl edi, 4
movzx edx, byte [ebx + 0x629b70]
movzx eax, byte [ebx + str._____aed]
add edx, edi
movzx esi, byte [ebx + 0x629bb0]
add eax, edi
mov ebx, dword [ebp - 0x78]
add esi, edi
mov dword [ebp - 4], eax
mov ecx, dword [ecx + edx*4]
inc ecx
mov eax, dword [ebx + eax*4]
add eax, ecx
mov ecx, ebx
mov ebx, dword [ebp - 0x68]
sar eax, 1
mov dword [ecx + esi*4], eax
mov ecx, dword [ebx + edx*4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + edx*4]
inc eax
add eax, ecx
sar eax, 1
mov dword [ebx + esi*4], eax
mov ebx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x78]
movzx ecx, byte [ebx + str.0154pqut]
mov eax, dword [esi + edx*4]
add ecx, edi
mov edi, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x34]
mov dword [esi + ecx*4], eax
mov eax, dword [edi + edx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [ebp - 0x14]
add eax, 8
mov dword [ebp - 0x14], eax
cmp eax, ebx
jb 0x414c83
jmp 0x414d17
mov edi, dword [ebp - 0x68]
xor edx, edx
mov esi, dword [ebp - 0x78]
lea eax, [ebx - 8]
xor ecx, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x3c], ecx
xor ebx, ebx
test eax, eax
je 0x414d9e
mov esi, dword [ebp - 0x3c]
mov eax, ebx
and eax, 0xf
mov edx, ebx
and edx, 0xfffffff0
shl edx, 4
movzx edi, byte [eax + ecx + 0x629b70]
lea ecx, [ebx - 8]
lea eax, [ecx - 4]
add edi, edx
and eax, 0xf
and ecx, 0xf
add ebx, 8
movzx esi, byte [eax + esi + 0x629b70]
mov eax, dword [ebp - 0x3c]
add esi, edx
movzx eax, byte [ecx + eax + 0x629b70]
add eax, edx
mov edx, dword [ebp - 0x78]
mov dword [ebp - 4], eax
mov ecx, dword [edx + eax*4]
mov eax, dword [edx + edi*4]
inc ecx
add eax, ecx
sar eax, 1
mov dword [edx + esi*4], eax
mov eax, dword [ebp - 0x68]
mov edx, dword [ebp - 4]
mov ecx, dword [eax + edx*4]
mov eax, dword [eax + edi*4]
inc ecx
mov edi, dword [ebp - 0x68]
add eax, ecx
mov ecx, dword [ebp - 0x3c]
sar eax, 1
mov dword [edi + esi*4], eax
cmp ebx, dword [ebp - 0x14]
jb 0x414d28
mov esi, dword [ebp - 0x78]
lea eax, [ebx + 4]
and ebx, 0xfffffff0
and eax, 0xf
shl ebx, 4
movzx ecx, byte [eax + ecx + 0x629b70]
mov eax, dword [esi + edx*4]
add ecx, ebx
mov dword [esi + ecx*4], eax
mov eax, dword [edi + edx*4]
mov dword [edi + ecx*4], eax
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x14]
add ecx, 0x40
mov dword [ebp - 0x3c], ecx
cmp ecx, 0x100
jb 0x414d22
mov edi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x34]
jmp 0x414de3
mov esi, dword [ebp - 0x78]
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x6c], esi
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x60]
cmp edx, 1
jne 0x415245
mov ecx, dword [ebp - 0x10]
mov esi, 0x80
mov eax, esi
shl eax, cl
mov ecx, dword [ebp - 0xc]
cdq
idiv ecx
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x14], eax
cmp edx, 8
ja case.0x414e22.1
jmp dword [edx*4 + 0x41664c]
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x24]
jae 0x416479
mov ecx, dword [ebp - 0x20]
mov eax, edi
shl edx, 4
shl eax, 4
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], edx
lea esp, [esp]
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x18]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x60], eax
cmp esi, ebx
jae 0x414f53
lea esp, [esp]
mov eax, esi
mov ecx, dword [ebp - 0x5c]
and eax, 0xf
movzx edx, byte [eax + edx + 0x629b70]
mov eax, esi
mov esi, dword [ebp - 0xc]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x3c]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
neg ebx
sar ebx, cl
sar eax, cl
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x70]
mov edx, dword [eax + edx*4]
mov eax, ebx
add edx, dword [ebp - 0x14]
imul edx, esi
mov esi, dword [ebp - 4]
sar eax, 1
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x20]
add ebx, eax
mov eax, dword [ebp - 8]
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 4], esi
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x30]
add ecx, dword [eax + 0x80a8]
mov eax, esi
add ecx, dword [ebp - 0x60]
mov esi, 0xff
test eax, eax
jns 0x414efb
xor eax, eax
jmp 0x414f03
cmp eax, 0xff
cmovg eax, esi
mov edi, dword [ebp - 0x80]
mov byte [ecx + edi], al
test edx, edx
jns 0x414f11
xor edx, edx
jmp 0x414f1a
cmp edx, 0xff
cmovg edx, esi
mov byte [ecx + 1], dl
test ebx, ebx
jns 0x414f25
xor ebx, ebx
jmp 0x414f2e
cmp ebx, 0xff
cmovg ebx, esi
mov eax, dword [ebp - 0x84]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x4c]
add esi, edi
mov edx, dword [ebp - 0x2c]
mov byte [ecx + eax], bl
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 8], esi
cmp esi, ebx
jb 0x414e70
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
add edx, dword [ebp - 0x64]
add eax, edi
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], edx
cmp eax, dword [ebp - 0x24]
jb 0x414e50
jmp 0x416476
push dword [ebp - 0x18]
mov esi, dword [ebp - 0x10]
mov edx, ecx
push dword [ebp - 0x28]
mov ecx, dword [ebp - 0x30]
push esi
call fcn.00413a60
add esp, 0xc
mov ecx, dword [ebp - 0xc]
jmp 0x41647c
mov edx, dword [ebp - 0x28]
mov eax, edx
mov dword [ebp - 8], eax
cmp edx, dword [ebp - 0x24]
jae 0x416479
shl edx, 4
mov ecx, edi
shl ecx, 4
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 4], edx
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x18]
shr eax, cl
mov dword [ebp - 0x14], esi
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 0x60], eax
cmp esi, ebx
jae 0x415074
lea esp, [esp]
mov edi, dword [ebp - 0x3c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x5c]
movzx edx, byte [eax + edx + 0x629b70]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov ebx, dword [eax + edx*4]
mov edi, dword [edi + edx*4]
mov eax, dword [ebp - 0xc]
imul ebx, eax
imul edi, eax
sar ebx, cl
sar edi, cl
neg ebx
mov ecx, dword [ebp - 0x70]
mov edx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x10]
imul edx, eax
mov eax, ebx
sar eax, 1
sar edx, cl
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x20]
add ebx, eax
mov eax, esi
shr eax, cl
mov ecx, dword [ebp - 0x54]
mov esi, dword [ecx + eax*4]
mov ecx, ebx
mov eax, dword [ebp - 0x30]
add esi, dword [eax + 0x80a8]
add esi, dword [ebp - 0x60]
lea eax, [esi + 3]
push eax
lea eax, [esi + 2]
push eax
lea eax, [esi + 1]
push eax
lea eax, [edi + ebx]
push esi
push eax
call fcn.0040ebd0
mov esi, dword [ebp - 0x14]
add esp, 0x14
mov edi, dword [ebp - 0x4c]
add esi, edi
mov ebx, dword [ebp - 0x34]
mov edx, dword [ebp - 4]
mov dword [ebp - 0x14], esi
cmp esi, ebx
jb 0x414fd0
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x64]
add eax, edi
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
cmp eax, dword [ebp - 0x24]
jb 0x414fb0
jmp 0x416476
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x5c]
shl esi, cl
mov ecx, dword [ebp - 0xc]
mov eax, dword [eax + 0x86e8]
mov dword [ebp - 0x60], eax
mov eax, esi
cdq
idiv ecx
mov edx, dword [ebp - 0x28]
sar eax, 1
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x2c], edx
cmp edx, dword [ebp - 0x24]
jae 0x416479
mov ecx, dword [ebp - 0x20]
mov eax, edi
shl edx, 4
shl eax, 4
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], edx
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x18]
shr eax, cl
mov dword [ebp - 0x1c], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x78], eax
cmp esi, ebx
jae 0x41520d
lea ecx, [ecx]
mov ecx, dword [ebp - 0x70]
mov eax, esi
and eax, 0xf
movzx edx, byte [eax + edx + 0x629b70]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x14]
sub eax, dword [ecx + edx*4]
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
sar eax, cl
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x68], eax
inc eax
sar eax, 1
mov esi, dword [ecx + edx*4]
imul esi, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x5c]
sar esi, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 8], esi
mov ecx, dword [ecx + edx*4]
imul ecx, dword [ebp - 0xc]
neg ecx
mov dword [ebp - 4], ecx
mov esi, dword [ebp - 4]
mov ecx, dword [ebp - 0x5c]
sar esi, cl
mov ecx, dword [ebp - 0x60]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x64]
imul edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x5c]
sar edx, cl
mov ecx, dword [ebp - 8]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x68]
lea ecx, [esi + 1]
add edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 8]
add ecx, eax
mov eax, dword [ebp - 0x1c]
add esi, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 4], esi
mov esi, 0xff
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x30]
add ecx, dword [eax + 0x80a8]
add ecx, dword [ebp - 0x78]
mov eax, dword [ebp - 8]
test eax, eax
jns 0x4151ad
xor eax, eax
jmp 0x4151b5
cmp eax, 0xff
cmovg eax, esi
mov byte [ecx], al
test edx, edx
jns 0x4151bf
xor edx, edx
jmp 0x4151c8
cmp edx, 0xff
cmovg edx, esi
mov eax, dword [ebp - 4]
mov byte [ecx + 1], dl
test eax, eax
jns 0x4151d6
xor eax, eax
jmp 0x4151de
cmp eax, 0xff
cmovg eax, esi
mov byte [ecx + 2], al
mov eax, dword [ebp - 0x34]
test eax, eax
jns 0x4151ec
xor eax, eax
jmp 0x4151f4
cmp eax, 0xff
cmovg eax, esi
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x38]
add esi, edi
mov byte [ecx + 3], al
mov dword [ebp - 0x1c], esi
cmp esi, ebx
jb 0x4150f0
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
add edx, dword [ebp - 0x74]
add eax, edi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], edx
cmp eax, dword [ebp - 0x24]
jb 0x4150d1
jmp 0x416476
push 0x80d
push str.....libjxrlib_strdec.c
push 0x62c9d0
call fcn.005bb431
add esp, 0xc
jmp 0x416476
cmp edx, 2
jne 0x4155b2
movzx ecx, byte [ebp - 0x38]
mov eax, 0x8000
sar eax, cl
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x10]
shl eax, cl
mov ecx, dword [ebp - 0xc]
cdq
idiv ecx
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x74], eax
cmp edx, 7
ja case.0x415276.1
jmp dword [edx*4 + 0x416670]
mov edx, dword [ebp - 0x28]
mov eax, edx
mov dword [ebp - 0x38], eax
cmp edx, dword [ebp - 0x24]
jae 0x416479
shl edx, 4
mov ecx, edi
shl ecx, 4
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x1c], edx
nop
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x18]
shr eax, cl
mov dword [ebp - 4], esi
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 0x60], eax
cmp esi, ebx
jae 0x4153b8
lea esp, [esp]
mov ebx, dword [ebp - 0xc]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x5c]
movzx edx, byte [eax + edx + 0x629b70]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x3c]
imul esi, ebx
mov eax, dword [eax + edx*4]
imul eax, ebx
neg esi
sar esi, cl
sar eax, cl
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x70]
mov edx, dword [eax + edx*4]
mov eax, esi
add edx, dword [ebp - 0x74]
sar eax, 1
imul edx, ebx
sar edx, cl
mov ecx, dword [ebp - 8]
sub edx, eax
inc ecx
mov eax, edx
sar ecx, 1
sub eax, ecx
mov ecx, dword [ebp - 0x20]
add esi, eax
mov eax, dword [ebp - 4]
add dword [ebp - 8], esi
shr eax, cl
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x80a8]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x68]
mov ecx, eax
mov eax, dword [ebp - 8]
shl esi, cl
shl edx, cl
shl eax, cl
mov ecx, 0xffff
test esi, esi
jns 0x415359
xor esi, esi
jmp 0x415362
cmp esi, 0xffff
cmovg esi, ecx
mov edi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x2c]
mov word [ebx + edi*2], si
test edx, edx
jns 0x415374
xor edx, edx
jmp 0x41537d
cmp edx, 0xffff
cmovg edx, ecx
mov esi, dword [ebp - 0x14]
mov edi, ebx
mov word [edi + esi*2 + 2], dx
test eax, eax
jns 0x41538f
xor eax, eax
jmp 0x415397
cmp eax, 0xffff
cmovg eax, ecx
mov ebx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x1c]
mov word [edi + esi*2 + 4], ax
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 0x4c]
add esi, edi
mov dword [ebp - 4], esi
cmp esi, ebx
jb 0x4152c0
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x38]
add edx, dword [ebp - 0x64]
add eax, edi
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x1c], edx
cmp eax, dword [ebp - 0x24]
jb 0x4152a0
jmp 0x416476
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x10]
mov eax, dword [eax + 0x86e8]
mov dword [ebp - 0x60], eax
mov eax, 0x8000
shl eax, cl
cdq
idiv dword [ebp - 0xc]
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x74], eax
mov eax, 0x8000
shl eax, cl
mov ecx, dword [ebp - 0xc]
cdq
idiv ecx
mov edx, dword [ebp - 0x28]
sar eax, 1
mov dword [ebp - 0x64], eax
mov eax, edx
mov dword [ebp - 0x38], eax
cmp edx, dword [ebp - 0x24]
jae 0x416479
mov ecx, edx
mov dword [ebp - 0x48], 0xffff
shl ecx, 4
mov dword [ebp - 8], ecx
mov ecx, edi
shl ecx, 4
mov dword [ebp - 0x44], ecx
mov edi, edi
mov edx, dword [ebp - 0x18]
mov ecx, esi
shr eax, cl
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 4], edx
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x78], eax
cmp edx, ebx
jae 0x41558c
jmp 0x415450
mov ecx, dword [ebp - 8]
and edx, 0xf
mov eax, dword [ebp - 4]
and eax, 0xfffffff0
mov esi, dword [ebp - 0x74]
shl eax, 4
movzx edx, byte [edx + ecx + 0x629b70]
add edx, eax
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x10]
sub esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x6c]
imul esi, ebx
mov eax, dword [eax + edx*4]
imul eax, ebx
sar esi, cl
mov ecx, dword [ebp - 0x5c]
sar eax, cl
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + edx*4]
imul eax, ebx
neg eax
sar eax, cl
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x60]
mov edx, dword [eax + edx*4]
lea eax, [esi + 1]
add edx, dword [ebp - 0x64]
imul edx, ebx
sar eax, 1
sar edx, cl
mov ecx, dword [ebp - 0x2c]
sub edx, eax
sar ecx, 1
mov dword [ebp - 0x58], edx
sub edx, ecx
add esi, edx
mov edx, dword [ebp - 0x14]
mov eax, esi
lea ecx, [edx + 1]
sar ecx, 1
sub eax, ecx
mov ecx, dword [ebp - 0x2c]
add ecx, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x2c], ecx
add edx, ecx
mov ecx, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x80a8]
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x2c]
shl eax, cl
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x58]
shl esi, cl
shl edx, cl
shl eax, cl
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
jns 0x415514
xor ecx, ecx
jmp 0x41551e
cmp ecx, 0xffff
cmovg ecx, dword [ebp - 0x48]
mov edi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
mov word [ebx + edi*2], cx
mov ecx, 0xffff
test esi, esi
jns 0x415535
xor esi, esi
jmp 0x41553e
cmp esi, 0xffff
cmovg esi, ecx
mov word [ebx + edi*2 + 2], si
test edx, edx
jns 0x41554b
xor edx, edx
jmp 0x415554
cmp edx, 0xffff
cmovg edx, ecx
mov esi, dword [ebp - 0x14]
mov edi, ebx
mov word [edi + esi*2 + 4], dx
test eax, eax
jns 0x415566
xor eax, eax
jmp 0x41556e
cmp eax, 0xffff
cmovg eax, ecx
mov edx, dword [ebp - 4]
mov ebx, dword [ebp - 0x34]
mov word [edi + esi*2 + 6], ax
mov edi, dword [ebp - 0x4c]
add edx, edi
mov dword [ebp - 4], edx
cmp edx, ebx
jb 0x415450
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x44]
add eax, edi
add dword [ebp - 8], ecx
mov dword [ebp - 0x38], eax
cmp eax, dword [ebp - 0x24]
jb 0x415430
jmp 0x416476
push 0x845
jmp 0x41522e
cmp edx, 3
jne 0x415919
cmp eax, 7
ja case.0x4155c4.1
jmp dword [eax*4 + 0x416690]
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 8], ecx
cmp ecx, dword [ebp - 0x24]
jae 0x416476
movzx eax, byte [ebp - 0x38]
mov edx, ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x48], eax
mov eax, edi
shl edx, 4
shl eax, 4
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x1c], edx
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x18]
shr eax, cl
mov dword [ebp - 4], esi
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 0x44], eax
cmp esi, ebx
jae 0x415713
mov ebx, dword [ebp - 0x3c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x5c]
movzx edx, byte [eax + edx + 0x629b70]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax + edx*4]
mov ebx, dword [ebx + edx*4]
mov eax, dword [ebp - 0xc]
imul esi, eax
imul ebx, eax
neg esi
sar esi, cl
sar ebx, cl
mov ecx, dword [ebp - 0x70]
mov edx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x10]
imul edx, eax
mov eax, esi
sar eax, 1
sar edx, cl
lea ecx, [ebx + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x20]
add esi, eax
mov eax, dword [ebp - 4]
shr eax, cl
add ebx, esi
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x58], eax
mov eax, dword [ecx + 0x80a8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x48]
mov ecx, eax
shl esi, cl
mov eax, 0x7fff
shl edx, cl
shl ebx, cl
cmp esi, 0xffff8000
jge 0x4156a8
mov esi, 0xffff8000
jmp 0x4156b1
cmp esi, 0x7fff
cmovg esi, eax
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x14]
mov word [edi + ecx*2], si
cmp edx, 0xffff8000
jge 0x4156ca
mov edx, 0xffff8000
jmp 0x4156d3
cmp edx, 0x7fff
cmovg edx, eax
mov esi, edi
mov word [esi + ecx*2 + 2], dx
cmp ebx, 0xffff8000
jge 0x4156e9
mov ebx, 0xffff8000
jmp 0x4156f2
cmp ebx, 0x7fff
cmovg ebx, eax
mov edi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x1c]
mov word [esi + ecx*2 + 4], bx
mov esi, dword [ebp - 4]
mov ebx, dword [ebp - 0x34]
add esi, edi
mov dword [ebp - 4], esi
cmp esi, ebx
jb 0x415613
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x74]
add eax, edi
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], edx
cmp eax, dword [ebp - 0x24]
jb 0x4155f7
jmp 0x416476
push dword [ebp - 0x18]
mov esi, dword [ebp - 0x10]
push dword [ebp - 0x28]
mov edx, dword [ebp - 0xc]
push esi
call fcn.00413a60
mov ecx, dword [ebp - 0xc]
add esp, 0xc
jmp 0x41647c
mov eax, dword [ecx + 0x86e8]
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x44], eax
mov eax, ecx
mov dword [ebp - 0x68], eax
cmp ecx, dword [ebp - 0x24]
jae 0x416476
movzx ecx, byte [ebp - 0x38]
mov dword [ebp - 0x74], ecx
mov ecx, eax
shl ecx, 4
mov dword [ebp - 8], ecx
mov ecx, edi
shl ecx, 4
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x64], 0x7fff
mov edx, dword [ebp - 0x18]
mov ecx, esi
shr eax, cl
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 4], edx
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x58], eax
cmp edx, ebx
jae 0x4158f3
nop
mov ecx, dword [ebp - 8]
and edx, 0xf
mov eax, dword [ebp - 4]
and eax, 0xfffffff0
mov ebx, dword [ebp - 0xc]
shl eax, 4
movzx edx, byte [edx + ecx + 0x629b70]
add edx, eax
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x6c]
imul esi, ebx
mov eax, dword [eax + edx*4]
invalid
scasd eax, dword es:[edi]