Function at 0x40956b
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x413c9f
call fcn.0040d2ec
sub esp, 0x6c
push ebx
xor ebx, ebx
mov dword [ebp - 0x2c], ebx
mov eax, dword [0x416014]
push esi
push edi
mov dword [ebp - 0x18], eax
xor esi, esi
inc esi
mov dword [ebp - 4], esi
call fcn.00404ea1
push eax
lea ecx, [ebp - 0x18]
call fcn.00408f17
xor eax, eax
mov dword [ebp - 0x58], ebx
lea edi, [ebp - 0x54]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0x58]
push eax
call fcn.004081d6
pop ecx
test al, al
jne 0x409645
mov eax, dword [0x416014]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x24]
push eax
mov byte [ebp - 4], 2
call fcn.004077bc
pop ecx
push dword [eax]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 3
call fcn.00405e28
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.00405722
lea eax, [ebp - 0x10]
push eax
push esi
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x10], 0x2a
call fcn.004057dd
lea eax, [ebp - 0x28]
push eax
call fcn.00407765
pop ecx
push dword [eax]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call fcn.00405e28
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.00405722
push 0xc
lea ecx, [ebp - 0x14]
call fcn.00405e4f
push 0xc
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0040cba0
add esp, 0xc
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 1
call fcn.00405722
call dword [0x40110c]
mov dword [ebp - 0x78], eax
mov eax, dword [0x4178c8]
cmp eax, ebx
je 0x4096bc
mov eax, dword [eax + 0x158]
xor edx, edx
mov ecx, 0x8bf0d24
div ecx
push 0x72e0f78a
push 0x3533e591
push 0xe76200b9
push 0x80f46563
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x110]
xor edx, edx
mov ecx, 0x555867cf
div ecx
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x20]
xor edx, edx
mov ecx, 0x8575b867
div ecx
push 0x3ed5e305
push 0x246d25d4
push 0x2ba57dd9
push 0xaf07d663
call edx
add esp, 0x20
and dword [ebp - 0x78], 0xfffffffe
cmp byte [ebp + 0xc], bl
je 0x4096cb
or dword [ebp - 0x78], 2
jmp 0x4096cf
and dword [ebp - 0x78], 0xfffffffd
call fcn.0040861e
test al, al
je 0x4096de
or dword [ebp - 0x78], 4
jmp 0x4096e2
and dword [ebp - 0x78], 0xfffffffb
cmp byte [ebp + 0x10], bl
je 0x4096ed
or dword [ebp - 0x78], 8
jmp 0x4096f1
and dword [ebp - 0x78], 0xfffffff7
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x20]
call fcn.004074e4
push dword [ebp - 0x20]
lea esi, [ebp - 0x1c]
mov byte [ebp - 4], 5
mov dword [ebp - 0x1c], ebx
call fcn.004040ce
mov edx, dword [ebp - 0x1c]
pop ecx
add edx, 0xfffffffd
xor esi, esi
xor ecx, ecx
cmp edx, ebx
jle 0x409728
xor esi, dword [ecx + eax]
add ecx, 4
cmp ecx, edx
jl 0x40971e
cmp eax, ebx
je 0x409733
push eax
call fcn.0040b204
pop ecx
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call fcn.00405722
mov dword [ebp - 0x74], esi
call fcn.00406468
mov dword [ebp - 0x70], eax
call fcn.004064ed
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x60], eax
mov eax, dword [0x4178c8]
cmp eax, ebx
je 0x409875
mov eax, dword [eax + 0x78]
push 0x5f52037a
add eax, 0x51f8013a
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x5c]
mov dword [esp], 0x2bb8381
imul eax, eax, 0xc0069b31
push 0xd1218f20
push 0x74e182a7
push 0xd97fb345
push 0x4b865449
push 0xda256fc1
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x13c]
push 0xace19f80
push 0x472f3a6
xor eax, 0xcd4d7d4
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x38]
xor edx, edx
mov ecx, 0xdbaf4ceb
div ecx
push 0x6b534387
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x1c]
xor edx, edx
mov ecx, 0xea78d777
div ecx
push 0x3601bd94
push 0x1d5db39a
push 0x7d98a0f0
push 0xd41ef62e
push 0x3e324125
push 0x32fbb6d4
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xbc]
push 0xbe49fc58
push 0x769b30f9
push 0x2281f67
push 0x5c9864b1
xor eax, 0x643b376
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x104]
xor edx, edx
mov ecx, 0x598fe49d
div ecx
add esp, 0x4c
push 0x740b9d45
push 0xbc33c626
push 0xbc6acb96
push 0x6d49cebe
push 0xbce8b70a
push 0xd75fd1b3
call edx
add esp, 0x18
xor esi, dword [ebp - 0x78]
mov eax, dword [ebp + 0x14]
xor esi, dword [ebp - 0x70]
mov dword [ebp - 0x40], ebx
xor esi, dword [ebp - 0x6c]
mov dword [ebp - 0x3c], ebx
xor esi, dword [ebp - 0x68]
mov dword [ebp - 0x38], ebx
xor esi, dword [ebp - 0x64]
mov dword [ebp - 0x34], ebx
xor esi, dword [ebp - 0x60]
mov dword [eax], esi
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x60]
push eax
mov dword [ebp - 0x5c], esi
call fcn.00403f72
mov eax, dword [0x4178c8]
pop ecx
pop ecx
cmp eax, ebx
je 0x409955
mov eax, dword [eax + 0x148]
push 0x7d0c2113
push 0x9993ad3a
push 0xe7b87200
push 0x49dec848
push 0x18ccb12
push 0x79013d2a
sub eax, 0x19c0266e
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x18c]
xor edx, edx
mov ecx, 0x141d6c4f
div ecx
push 0xa5ce6b89
push 0x222f04dd
push 0x58c29102
push 0x3432c958
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x174]
xor edx, edx
mov ecx, 0xe5b67ab6
div ecx
push 0xb40ffa04
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xd4]
push 0xadf886b0
push 0x940ebb88
push 0x5ae7f59f
push 0x1115dbfb
push 0xff9742cf
add eax, 0x5eef83e0
call eax
add esp, 0x40
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.00403f72
mov eax, dword [0x4178c8]
pop ecx
pop ecx
cmp eax, ebx
je 0x409a48
mov eax, dword [eax]
push 0xad563ec1
push 0x75182986
push 0xf50af96e
push 0x33885f83
sub eax, 0x6a92a19f
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xfc]
imul eax, eax, 0xa6ea2ca3
push 0x561eb1b4
push 0x41b581ad
push 0x791fb46f
push 0x683d1b41
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x94]
imul eax, eax, 0x6323c386
push 0x4cf8e3c8
push 0x2092f867
push 0x51ae27a7
push 0x3dad555a
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x154]
xor eax, 0x2c715b1e
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xf0]
push 0x43baa535
push 0xc0657934
push 0x7718010a
push 0x69b98d3a
or eax, 0xa324c12
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xc0]
imul eax, eax, 0x890dcad
add esp, 0x40
push 0x89302ceb
push 0x79a43ad0
push 0xf7c64af6
call eax
add esp, 0xc
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.00403f72
mov eax, dword [0x4178c8]
pop ecx
pop ecx
cmp eax, ebx
je 0x409b1a
mov eax, dword [eax + 0xd8]
push 0x95a858a6
push 0x12ebf04
push 0xa6ddf7f5
or eax, 0x4d873e4d
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x30]
xor edx, edx
mov ecx, 0x7e399322
div ecx
push 0x6f9d55e1
push 0xff4bc510
push 0x321c7d06
push 0x97e8753f
push 0x3c7d12a0
push 0x2d930227
push 0x5fd844ac
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x28]
imul eax, eax, 0x7f47caf8
push 0x93fa774d
push 0x39ebaed
push 0xc321b539
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xc8]
xor edx, edx
mov ecx, 0x577ef9d8
div ecx
push 0x44fdafb8
push 0x61b96b75
push 0xa5a580be
push 0x580b8500
call eax
add esp, 0x44
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x78]
push eax
call fcn.00403f72
mov eax, dword [0x416014]
mov edi, dword [ebp + 8]
pop ecx
pop ecx
mov dword [edi], eax
mov dword [ebp - 0x2c], 1
xor esi, esi
push dword [ebp + esi*4 - 0x78]
lea eax, [ebp - 0x30]
push eax
call fcn.00407b7b
pop ecx
pop ecx
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 6
call fcn.00405e28
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 1
call fcn.00405722
inc esi
cmp esi, 8
jb 0x409b54
mov ecx, edi
call fcn.00406b63
mov eax, dword [0x4178c8]
cmp eax, ebx
je 0x409c75
mov eax, dword [eax + 0x184]
push 0xec240763
push 0xd2677ac0
push 0xf56c8931
push 0x433d1684
push 0x3a6e30d3
add eax, 0x6c112540
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xcc]
push 0xe7b90a69
push 0xf7210c91
sub eax, 0x5ce7389f
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x10]
push 0x8f9f95cb
push 0xc26d54cf
push 0xa16d0034
push 0x3de7dc5a
add eax, 0x406e0920
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xe4]
xor edx, edx
mov ecx, 0x8b847dee
div ecx
push 0xf1e41f7e
push 0x4d65c26
push 0xbe786094
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xa8]
push 0xb2c7a61c
imul eax, eax, 0xac14eb46
push 0x162827d3
push 0x60b4c084
push 0x3f1914ff
push 0x9b8a87f7
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x60]
add esp, 0x4c
push 0x115682ab
push 0xde3adb56
push 0x8a907d71
push 0xf20c9fe8
add eax, 0x56be7240
call eax
add esp, 0x10
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], bl
call fcn.00405722
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret