Function at 0x414300
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, edx
mov edx, ecx
push ebx
push esi
push edi
cmp dword [edx + 0x8874], 0
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], edx
jne 0x414911
mov ecx, dword [edx + 0x8870]
mov dword [ebp - 0x38], ecx
test ecx, ecx
je 0x414911
mov ecx, eax
mov ebx, 1
shl ebx, cl
mov esi, 0x10
mov ecx, dword [edx + 0x8614]
mov edx, dword [edx + 0x85b8]
dec ecx
shl ecx, 4
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x34], edx
mov eax, dword [edx + 0x24]
mov edi, dword [edx + 0x1c]
sub eax, ecx
inc eax
cmp eax, esi
cmovb esi, eax
mov eax, dword [edx + 0x20]
inc edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], edi
cmp ecx, eax
jbe 0x414375
xor eax, eax
jmp 0x414378
and eax, 0xf
dec eax
xor edx, edx
add eax, ebx
xor ecx, ecx
div ebx
xor edx, edx
mov esi, eax
mov eax, dword [ebp - 0x34]
imul esi, ebx
mov eax, dword [eax + 0x18]
dec eax
add eax, ebx
mov dword [ebp - 0x10], esi
div ebx
imul eax, ebx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0xc]
cmp edx, 4
mov dword [ebp - 0x3c], edx
sete cl
xor edx, edx
add ecx, 3
add ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x40], eax
mov eax, dword [ecx + 0x86dc]
mov dword [ebp - 0x24], eax
mov al, byte [ecx + 0x808c]
mov byte [ebp - 0x30], al
mov al, byte [ecx + 0x808d]
mov ecx, dword [ebp - 0x34]
mov byte [ebp - 1], al
mov eax, dword [ecx + 0x28]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
div ebx
mov ecx, dword [ecx + 0x2c]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x3c]
cmp eax, 7
je 0x414408
cmp eax, 4
je 0x414408
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x40]
cmp eax, 1
jne 0x4144e0
mov ecx, dword [ebp + 0xc]
mov eax, 0x80
shl eax, cl
cdq
idiv dword [ebp + 8]
mov dword [ebp - 0x40], eax
cmp esi, dword [ebp - 0x14]
jae 0x414911
mov ecx, dword [ebp - 8]
mov eax, esi
shl eax, 4
mov dword [ebp - 0x30], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x38], eax
mov edx, dword [ebp - 0x20]
mov eax, esi
mov edi, dword [ebp - 0xc]
shr eax, cl
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x3c], eax
cmp edi, edx
jae 0x4144c3
mov ecx, dword [ebp - 0x30]
mov eax, edi
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x629b70]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x40]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
test edx, edx
jns 0x41448c
xor edx, edx
jmp 0x41449a
cmp edx, 0xff
mov eax, 0xff
cmovg edx, eax
mov ecx, dword [ebp - 8]
mov eax, edi
mov esi, dword [ebp - 0x28]
add edi, ebx
shr eax, cl
mov eax, dword [esi + eax*4]
mov esi, dword [ebp - 0x1c]
add eax, dword [esi + 0x80a8]
add eax, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x2c]
mov byte [eax + esi], dl
cmp edi, dword [ebp - 0x18]
jb 0x414458
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x38]
add esi, ebx
add dword [ebp - 0x30], eax
mov dword [ebp - 0x10], esi
cmp esi, dword [ebp - 0x14]
jb 0x414441
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x4145d3
mov ecx, dword [ebp + 0xc]
mov eax, 0x8000
shl eax, cl
cdq
idiv dword [ebp + 8]
mov dword [ebp - 0x40], eax
cmp esi, dword [ebp - 0x14]
jae 0x414911
movzx eax, byte [ebp - 0x30]
mov edx, esi
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x3c], eax
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x20]
mov edi, eax
mov eax, esi
shr eax, cl
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x18]
jae 0x4145b6
mov esi, dword [ebp - 0x18]
lea ecx, [ecx]
mov eax, edi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x629b70]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x40]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, dword [ebp - 0x3c]
shl edx, cl
test edx, edx
jns 0x414576
xor edx, edx
jmp 0x414584
cmp edx, 0xffff
mov eax, 0xffff
cmovg edx, eax
mov ecx, dword [ebp - 8]
mov eax, edi
shr eax, cl
add edi, ebx
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x38]
add ecx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0x30]
cmp edi, esi
jb 0x414540
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
add edx, dword [ebp - 0x34]
add esi, ebx
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x30], edx
cmp esi, dword [ebp - 0x14]
jb 0x414520
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 3
jne 0x4146ba
cmp esi, dword [ebp - 0x14]
jae 0x414911
movzx eax, byte [ebp - 0x30]
mov edx, esi
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x40], eax
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x20]
mov edi, eax
mov eax, esi
shr eax, cl
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x18]
jae 0x41469d
mov esi, dword [ebp - 0x18]
mov eax, edi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x629b70]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, dword [ebp - 0x40]
shl edx, cl
cmp edx, 0xffff8000
jge 0x41465d
mov edx, 0xffff8000
jmp 0x41466b
cmp edx, 0x7fff
mov eax, 0x7fff
cmovg edx, eax
mov ecx, dword [ebp - 8]
mov eax, edi
shr eax, cl
add edi, ebx
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x3c]
add ecx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0x30]
cmp edi, esi
jb 0x414623
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
add edx, dword [ebp - 0x38]
add esi, ebx
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x30], edx
cmp esi, dword [ebp - 0x14]
jb 0x414602
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 4
jne 0x414787
cmp esi, dword [ebp - 0x14]
jae 0x414911
mov ecx, dword [ebp - 8]
mov eax, esi
shl eax, 4
mov dword [ebp - 0x34], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x3c], eax
nop
mov edi, dword [ebp - 0x20]
mov eax, esi
mov edx, dword [ebp - 0xc]
shr eax, cl
mov dword [ebp - 0x30], edx
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x40], eax
cmp edx, edi
jae 0x41476a
mov esi, dword [ebp - 8]
lea ecx, [ecx]
mov ecx, dword [ebp - 0x34]
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x629b70]
mov eax, edx
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, esi
mov eax, edx
and edx, 0x7fff
sar eax, 0x1f
xor edx, eax
sub edx, eax
mov eax, dword [ebp - 0x30]
shr eax, cl
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x40]
add ecx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0x30]
add edx, ebx
mov dword [ebp - 0x30], edx
cmp edx, edi
jb 0x414700
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x3c]
add esi, ebx
add dword [ebp - 0x34], eax
mov dword [ebp - 0x10], esi
cmp esi, dword [ebp - 0x14]
jb 0x4146e0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 6
jne 0x41484c
cmp esi, dword [ebp - 0x14]
jae 0x414911
movzx eax, byte [ebp - 0x30]
mov edx, esi
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x40], eax
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x20]
mov edi, eax
mov eax, esi
shr eax, cl
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x18]
jae 0x41482f
mov esi, dword [ebp - 0x18]
mov eax, edi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x629b70]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
mov eax, edi
imul edx, dword [ebp + 8]
add edi, ebx
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, dword [ebp - 0x40]
shl edx, cl
mov ecx, dword [ebp - 8]
shr eax, cl
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x3c]
add ecx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x80a8]
mov dword [eax + ecx*4], edx
mov edx, dword [ebp - 0x30]
cmp edi, esi
jb 0x4147d3
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
add edx, dword [ebp - 0x38]
add esi, ebx
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x30], edx
cmp esi, dword [ebp - 0x14]
jb 0x4147b6
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 7
jne 0x4143fe
cmp esi, dword [ebp - 0x14]
jae 0x414911
mov ecx, dword [ebp - 8]
mov eax, esi
shl eax, 4
mov dword [ebp - 0x34], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x3c], eax
mov edi, dword [ebp - 0x20]
mov eax, esi
mov edx, dword [ebp - 0xc]
shr eax, cl
mov dword [ebp - 0x38], edx
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x40], eax
cmp edx, edi
jae 0x4148fd
mov esi, dword [ebp - 8]
mov ecx, dword [ebp - 0x34]
mov eax, edx
and eax, 0xf
push dword [ebp - 0x30]
movzx ecx, byte [eax + ecx + 0x629b70]
mov eax, edx
mov dl, byte [ebp - 1]
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + ecx*4]
imul eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar eax, cl
mov ecx, eax
call fcn.0040ecc0
mov edx, dword [ebp - 0x38]
mov ecx, esi
mov eax, edx
add esp, 4
shr eax, cl
add edx, ebx
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x38], edx
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x40]
add ecx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x80a8]
movss dword [eax + ecx*4], xmm0
cmp edx, edi
jb 0x414892
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x3c]
add esi, ebx
add dword [ebp - 0x34], eax
mov dword [ebp - 0x10], esi
cmp esi, dword [ebp - 0x14]
jb 0x414871
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret