Function at 0x417c20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov ebx, dword [0x4a03e0]
test ebx, ebx
je 0x41820f
mov edx, dword [esp + 0x50]
mov edi, 0x9e3779b9
mov esi, 0xfeedbeef
mov eax, dword [edx + 4]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov dword [esp + 0x18], eax
call fcn.0047a2e0
mov edx, 0x9e3779b9
cmp eax, 0xb
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
jbe 0x417d53
mov dword [esp + 0x20], ebx
mov ebp, ecx
movsx ebx, byte [eax + 5]
movsx ecx, byte [eax + 6]
shl ebx, 8
shl ecx, 0x10
add ecx, ebx
movsx ebx, byte [eax + 4]
add ebx, ecx
movsx ecx, byte [eax + 7]
shl ecx, 0x18
add ecx, ebx
movsx ebx, byte [eax + 9]
add edi, ecx
movsx ecx, byte [eax + 0xa]
shl ebx, 8
shl ecx, 0x10
add ecx, ebx
movsx ebx, byte [eax + 8]
add ebx, ecx
movsx ecx, byte [eax + 0xb]
shl ecx, 0x18
add ecx, ebx
movsx ebx, byte [eax + 1]
add esi, ecx
movsx ecx, byte [eax + 2]
shl ebx, 8
shl ecx, 0x10
add ecx, ebx
movsx ebx, byte [eax]
add ebx, ecx
movsx ecx, byte [eax + 3]
shl ecx, 0x18
add ecx, ebx
sub ecx, edi
sub edi, esi
sub ecx, esi
add edx, ecx
mov ecx, esi
shr ecx, 0xd
xor edx, ecx
mov ebx, edx
sub edi, edx
shl ebx, 8
sub esi, edx
xor ebx, edi
mov ecx, ebx
sub esi, ebx
shr ecx, 0xd
xor ecx, esi
sub edx, ebx
mov esi, ecx
sub edx, ecx
shr esi, 0xc
sub ebp, 0xc
xor esi, edx
mov edx, ebx
sub edx, ecx
mov ebx, esi
sub edx, esi
add eax, 0xc
shl ebx, 0x10
xor ebx, edx
mov edx, ecx
sub edx, esi
mov ecx, ebx
sub edx, ebx
sub esi, ebx
shr ecx, 5
xor ecx, edx
mov edx, ecx
sub esi, ecx
shr edx, 3
sub ebx, ecx
xor edx, esi
mov edi, edx
sub ebx, edx
shl edi, 0xa
sub ecx, edx
xor edi, ebx
mov esi, edi
sub ecx, edi
shr esi, 0xf
xor esi, ecx
cmp ebp, 0xb
ja 0x417c75
mov ebx, dword [esp + 0x20]
mov ecx, ebp
add esi, dword [esp + 0x1c]
cmp ecx, 0xb
jbe switch.0x00418178
sub edx, edi
mov eax, esi
sub edx, esi
sub edi, esi
shr eax, 0xd
xor edx, eax
mov eax, edx
sub edi, edx
shl eax, 8
sub esi, edx
xor eax, edi
mov edi, eax
sub esi, eax
shr edi, 0xd
sub edx, eax
xor edi, esi
mov ecx, edi
sub edx, edi
shr ecx, 0xc
sub eax, edi
xor ecx, edx
mov edx, ecx
sub eax, ecx
shl edx, 0x10
sub edi, ecx
xor edx, eax
mov eax, edx
sub edi, edx
shr eax, 5
sub ecx, edx
xor eax, edi
mov esi, eax
sub ecx, eax
shr esi, 3
sub edx, eax
xor esi, ecx
sub edx, esi
mov ecx, esi
sub eax, esi
mov esi, dword [ebx + 8]
shl ecx, 0xa
xor ecx, edx
sub eax, ecx
shr ecx, 0xf
mov edi, dword [esi]
xor ecx, eax
mov eax, dword [esi + 4]
sub eax, 1
and ecx, eax
lea eax, [ecx + ecx*2]
lea eax, [edi + eax*4]
mov edi, dword [eax]
test edi, edi
je 0x418307
mov ebp, dword [esp + 0x1c]
sub edi, dword [esi + 0x14]
test edi, edi
je 0x417dfd
cmp ebp, dword [edi + 0x20]
je 0x418070
mov edi, dword [edi + 0x18]
test edi, edi
jne 0x418170
mov dword [esp], 0x28
call fcn.0047a2e8
mov edi, dword [esp + 0x18]
mov esi, eax
mov eax, dword [edi]
mov edx, esi
mov dword [esi + 4], 0
mov dword [esi], eax
mov eax, dword [esp + 0x50]
mov dword [eax + 8], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x1c], esi
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x417e31
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea ecx, [edx + 2]
cmove edx, ecx
add al, al
sbb edx, 3
sub edx, esi
mov dword [esi + 0x20], edx
mov eax, dword [ebx + 8]
lea ebp, [esi + 8]
mov eax, dword [eax + 0x10]
mov dword [eax + 8], esi
mov edx, dword [ebx + 8]
mov eax, dword [edx + 0x10]
sub eax, dword [edx + 0x14]
mov dword [esi + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [eax + 0x10], ebp
mov eax, dword [ebx + 8]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov ecx, esi
mov dword [esp + 0x20], esi
add dword [eax + 0xc], 1
mov eax, dword [ebx + 8]
mov dword [esi + 0x24], 0xfeedbeef
mov dword [esi + 8], eax
mov edx, dword [ecx]
add ecx, 4
lea eax, [edx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x417ea4
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea edx, [ecx + 2]
cmovne edx, ecx
add al, al
sbb edx, 3
sub edx, esi
cmp edx, 0xb
mov dword [esp + 0x20], edx
jbe 0x4185c2
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x20]
mov ecx, 0xfeedbeef
mov dword [esp + 0x24], esi
mov edi, 0x9e3779b9
mov edx, 0x9e3779b9
mov dword [esp + 0x1c], 0x9e3779b9
mov eax, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x28], ebx
nop
movsx esi, byte [eax + 5]
movsx ebx, byte [eax + 6]
shl esi, 8
shl ebx, 0x10
add esi, ebx
movsx ebx, byte [eax + 4]
add esi, ebx
movsx ebx, byte [eax + 7]
shl ebx, 0x18
add ebx, esi
movsx esi, byte [eax + 9]
add edi, ebx
movsx ebx, byte [eax + 0xa]
shl esi, 8
shl ebx, 0x10
add esi, ebx
movsx ebx, byte [eax + 8]
add esi, ebx
movsx ebx, byte [eax + 0xb]
shl ebx, 0x18
add ebx, esi
movsx esi, byte [eax + 1]
add ebx, ecx
movsx ecx, byte [eax + 2]
shl esi, 8
shl ecx, 0x10
add esi, ecx
movsx ecx, byte [eax]
add esi, ecx
movsx ecx, byte [eax + 3]
shl ecx, 0x18
add ecx, esi
sub ecx, ebx
sub ecx, edi
sub edi, ebx
add edx, ecx
mov ecx, ebx
shr ecx, 0xd
xor edx, ecx
mov ecx, edx
sub edi, edx
shl ecx, 8
sub ebx, edx
xor ecx, edi
mov edi, ecx
sub ebx, ecx
shr edi, 0xd
xor edi, ebx
sub edx, ecx
mov esi, edi
sub edx, edi
shr esi, 0xc
sub ebp, 0xc
xor esi, edx
mov edx, ecx
sub edx, edi
mov ecx, esi
sub edx, esi
sub edi, esi
shl ecx, 0x10
add eax, 0xc
xor ecx, edx
mov ebx, ecx
sub edi, ecx
shr ebx, 5
sub esi, ecx
xor ebx, edi
mov edx, ebx
sub esi, ebx
shr edx, 3
sub ecx, ebx
xor edx, esi
mov edi, edx
sub ecx, edx
shl edi, 0xa
sub ebx, edx
xor edi, ecx
mov ecx, edi
sub ebx, edi
shr ecx, 0xf
xor ecx, ebx
mov ebx, dword [esp + 0x18]
cmp ebp, 0xb
mov dword [ebx + 0x24], ecx
ja 0x417f10
mov esi, ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, esi
mov dword [esp + 0x1c], edx
mov esi, dword [eax]
add eax, 4
lea edx, [esi - 0x1010101]
not esi
and edx, esi
and edx, 0x80808080
je 0x418005
mov dword [esp + 0x28], edx
shr edx, 0x10
mov esi, dword [esp + 0x18]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x28]
test dword [esp + 0x28], 0x8080
cmove edx, dword [esp + 0x18]
mov dword [esp + 0x28], edx
lea edx, [eax + 2]
cmove eax, edx
movzx edx, byte [esp + 0x28]
add dl, dl
sbb eax, 3
sub eax, esi
add ecx, eax
cmp dword [esp + 0x20], 0xb
mov dword [esi + 0x24], ecx
ja case.0x418066.0
mov eax, dword [esp + 0x20]
jmp dword [eax*4 + 0x482a94]
mov ecx, dword [esp + 0x18]
mov dword [esp + 8], ebp
mov dword [esp + 4], ecx
mov eax, dword [edi + 0x1c]
mov dword [esp], eax
call fcn.0047a368
test eax, eax
jne 0x417df2
mov eax, dword [edi + 4]
mov ebx, dword [esp + 0x50]
add eax, 1
mov dword [edi + 4], eax
mov dword [ebx + 8], eax
mov dword [esp], 0x4a2c2c
call fcn.00465930
test eax, eax
jne 0x4185fc
mov eax, dword [0x4a2d84]
add eax, dword [0x4a03e4]
lea eax, [eax*4 + 8]
mov dword [esp + 4], eax
mov eax, dword [0x4a2d6c]
mov dword [esp], eax
call fcn.0047a3b0
mov dword [esp], 0x4a2c2c
mov dword [0x4a2d6c], eax
call fcn.00462840
test eax, eax
jne 0x4185f7
call fcn.0045fb60
mov dword [esp], 0x4a2cd4
call fcn.00460dd0
test eax, eax
jne 0x4185f2
mov dword [esp], 0
call fcn.0047a328
mov ebx, dword [esp + 0x50]
mov dword [ebx + 0x398], eax
mov dword [esp], 0x4a2cd4
call fcn.004603e0
test eax, eax
jne 0x4185ed
call fcn.0045fb60
cmp byte [0x4a2d28], 0
jne 0x4181e0
mov eax, dword [0x4a2d84]
mov ebx, dword [esp + 0x50]
mov edx, dword [0x4a2d6c]
mov dword [edx + eax*4], ebx
add eax, 1
mov dword [0x4a2d84], eax
add esp, 0x3c
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
sub edi, dword [esi + 0x14]
jmp 0x417de5
jmp dword [ecx*4 + 0x482ac4]
movsx ecx, byte [eax + 0xa]
shl ecx, 0x18
add esi, ecx
movsx ecx, byte [eax + 9]
shl ecx, 0x10
add esi, ecx
movsx ecx, byte [eax + 8]
shl ecx, 8
add esi, ecx
movsx ecx, byte [eax + 7]
shl ecx, 0x18
add edi, ecx
movsx ecx, byte [eax + 6]
shl ecx, 0x10
add edi, ecx
movsx ecx, byte [eax + 5]
shl ecx, 8
add edi, ecx
movsx ecx, byte [eax + 4]
add edi, ecx
movsx ecx, byte [eax + 3]
shl ecx, 0x18
add edx, ecx
movsx ecx, byte [eax + 2]
shl ecx, 0x10
add edx, ecx
movsx ecx, byte [eax + 1]
shl ecx, 8
add edx, ecx
movsx eax, byte [eax]
add edx, eax
jmp case.0x418178.0
mov eax, dword [0x4a03e4]
mov ecx, dword [0x4a2d84]
mov ebx, dword [esp + 0x50]
mov edx, dword [0x4a2d6c]
add ecx, eax
add eax, 1
mov dword [0x4a03e4], eax
mov eax, 1
mov dword [edx + ecx*4], ebx
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], 0x28
call fcn.0047a2e8
mov ebx, dword [esp + 0x50]
mov esi, eax
mov eax, dword [ebx + 4]
mov edx, esi
mov eax, dword [eax + 8]
mov eax, dword [eax]
mov dword [esi + 4], 0
mov dword [esi], eax
mov dword [ebx + 8], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x1c], esi
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x418245
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea ecx, [edx + 2]
cmove edx, ecx
add al, al
sbb edx, 3
sub edx, esi
mov dword [esi + 0x20], edx
mov dword [esi + 0xc], 0
mov dword [esp], 0x2c
mov dword [0x4a03e0], esi
call fcn.0047a2e8
test eax, eax
mov dword [esp + 0x18], eax
mov dword [esi + 8], eax
je 0x4185e1
mov edi, dword [esp + 0x18]
xor ebx, ebx
mov ecx, 0xb
mov eax, ebx
lea ebp, [esi + 8]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x18]
mov dword [eax + 0x10], ebp
mov dword [eax + 4], 0x20
mov dword [eax + 8], 5
mov dword [eax + 0x14], 8
mov dword [esp], 0x180
call fcn.0047a2e8
mov edx, eax
mov eax, dword [esp + 0x18]
test edx, edx
mov dword [eax], edx
je 0x4185e1
mov eax, ebx
mov ecx, 0x60
mov edi, edx
mov ebx, esi
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x18]
mov dword [eax + 0x28], 0xa0111fe1
jmp 0x417e89
xor edi, edi
mov ebp, dword [esp + 0x1c]
jmp 0x417de5
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 0xa]
shl eax, 0x18
add ecx, eax
mov dword [esi + 0x24], ecx
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 9]
shl eax, 0x10
add ecx, eax
mov dword [esi + 0x24], ecx
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 8]
shl eax, 8
add ecx, eax
mov dword [esi + 0x24], ecx
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 7]
shl eax, 0x18
add edi, eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 6]
shl eax, 0x10
add edi, eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 5]
shl eax, 8
add edi, eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 4]
add edi, eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 3]
shl eax, 0x18
add dword [esp + 0x1c], eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 2]
shl eax, 0x10
add dword [esp + 0x1c], eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx + 1]
shl eax, 8
add dword [esp + 0x1c], eax
mov edx, dword [esp + 0x24]
movsx eax, byte [edx]
add dword [esp + 0x1c], eax
mov edx, dword [esp + 0x1c]
mov eax, ecx
shr eax, 0xd
sub edx, edi
sub edi, ecx
sub edx, ecx
xor edx, eax
mov eax, edx
sub edi, edx
shl eax, 8
sub ecx, edx
xor eax, edi
mov edi, eax
sub ecx, eax
shr edi, 0xd
sub edx, eax
xor edi, ecx
mov ecx, edi
sub edx, edi
shr ecx, 0xc
xor ecx, edx
mov edx, eax
sub edx, edi
mov eax, ecx
sub edx, ecx
sub edi, ecx
shl eax, 0x10
xor eax, edx
mov edx, eax
sub edi, eax
shr edx, 5
sub ecx, eax
xor edx, edi
mov edi, edx
sub ecx, edx
shr edi, 3
sub eax, edx
xor edi, ecx
mov ecx, edi
sub eax, edi
shl ecx, 0xa
xor ecx, eax
mov eax, ecx
shr eax, 0xf
sub edx, edi
sub edx, ecx
xor eax, edx
mov dword [esi + 0x24], eax
mov edx, dword [ebx + 8]
mov ecx, dword [edx + 4]
mov edx, dword [edx]
sub ecx, 1
and ecx, eax
lea eax, [ecx + ecx*2]
shl eax, 2
add edx, eax
add dword [edx + 4], 1
mov edx, dword [ebx + 8]
mov edx, dword [edx]
mov edx, dword [edx + eax]
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], edx
mov edx, dword [ebx + 8]
mov edx, dword [edx]
add edx, eax
mov ecx, dword [edx]
test ecx, ecx
je 0x418459
mov dword [ecx + 0xc], ebp
mov edx, dword [ebx + 8]
mov edx, dword [edx]
add edx, eax
mov dword [edx], ebp
mov edx, dword [ebx + 8]
add eax, dword [edx]
mov edx, dword [eax + 8]
lea edx, [edx + edx*4 + 5]
add edx, edx
cmp dword [eax + 4], edx
jb 0x41809f
mov ebx, dword [esi + 8]
cmp dword [ebx + 0x24], 1
je 0x41809f
mov eax, dword [ebx + 4]
lea ebp, [eax + eax*2]
shl ebp, 3
mov dword [esp], ebp
call fcn.0047a2e8
test eax, eax
mov edi, eax
je 0x4185e1
mov dword [esp + 8], ebp
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0047a388
mov edx, dword [ebx + 4]
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
lea edx, [edx + edx - 1]
test edx, eax
setne dl
add ecx, 1
shr eax, cl
movzx edx, dl
add edx, eax
mov dword [ebx + 0x18], edx
mov eax, dword [esi + 8]
mov dword [eax + 0x1c], 0
mov edx, dword [esi + 8]
mov eax, dword [edx + 4]
test eax, eax
je 0x418575
mov dword [esp + 0x1c], 0
mov ebx, dword [esp + 0x1c]
lea ecx, [ebx + ebx*2]
mov ebx, dword [edx]
lea ecx, [ebx + ecx*4]
mov ebx, dword [ecx]
test ebx, ebx
je 0x418566
mov dword [esp + 0x24], edi
jmp 0x41850d
mov edx, dword [esi + 8]
mov ebx, ebp
mov eax, dword [edx + 4]
lea eax, [eax + eax - 1]
mov edi, dword [esp + 0x24]
and eax, dword [ebx + 0x1c]
mov ebp, dword [ebx + 0x10]
lea eax, [eax + eax*2]
lea ecx, [edi + eax*4]
mov eax, dword [ecx + 4]
add eax, 1
mov dword [ecx + 4], eax
cmp eax, dword [edx + 0x18]
jbe 0x418541
add dword [edx + 0x1c], 1
xor edx, edx
mov eax, dword [ecx + 4]
mov edi, dword [esi + 8]
div dword [edi + 0x18]
mov dword [ecx + 8], eax
mov dword [ebx + 0xc], 0
mov eax, dword [ecx]
mov dword [ebx + 0x10], eax
mov eax, dword [ecx]
test eax, eax
je 0x418556
mov dword [eax + 0xc], ebx
test ebp, ebp
mov dword [ecx], ebx
jne 0x418505
mov edx, dword [esi + 8]
mov edi, dword [esp + 0x24]
mov eax, dword [edx + 4]
add dword [esp + 0x1c], 1
cmp dword [esp + 0x1c], eax
jb 0x4184ed
mov eax, dword [edx]
mov dword [esp], eax
call fcn.0047a350
mov eax, dword [esi + 8]
xor ecx, ecx
shl dword [eax + 4], 1
mov eax, dword [esi + 8]
add dword [eax + 8], 1
mov eax, dword [esi + 8]
mov dword [eax], edi
mov eax, dword [esi + 8]
mov edx, dword [eax + 0xc]
shr edx, 1
cmp dword [eax + 0x1c], edx
jbe 0x4185a6
mov ecx, dword [eax + 0x20]
add ecx, 1
mov dword [eax + 0x20], ecx
mov eax, dword [esi + 8]
cmp dword [eax + 0x20], 1
jbe 0x41809f
mov dword [eax + 0x24], 1
jmp 0x41809f
mov eax, dword [esp + 0x20]
mov ecx, 0xfeedbeef
mov edi, 0x9e3779b9
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], 0x9e3779b9
jmp 0x418052
mov dword [esp], 0xffffffff
call fcn.0047a2f8
call fcn.0047aa68
call fcn.0047aad4
call fcn.0047aa32
lea esi, [esi]
call fcn.0047aa9e
lea esi, [esi]
lea edi, [edi]