Function at 0x409777
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x413e4f
call fcn.0040d49c
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.00405060
push eax
lea ecx, [ebp - 0x18]
call fcn.00409123
mov eax, dword [0x4178c8]
cmp eax, ebx
je 0x40986e
mov eax, dword [eax + 0x4c]
xor edx, edx
mov ecx, 0x391bcb62
div ecx
push 0x83b2d50d
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x20]
imul eax, eax, 0xd61f3b7a
push 0xf742113e
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xbc]
xor edx, edx
mov ecx, 0x69661926
div ecx
push 0x3761aa4d
push 0x558d2b84
push 0xed231ace
push 0xeaa851c3
push 0x4bbcfefe
push 0x2265ec96
push 0xc2adf2af
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x7c]
xor edx, edx
mov ecx, 0x5db652a7
div ecx
push 0x65604702
push 0x4a6b8549
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xcc]
push 0xdabdfb1e
push 0x8cdd09db
push 0x31231acc
push 0x91873873
xor eax, 0xd83550c9
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xac]
add esp, 0x3c
sub eax, 0x67cddf6b
call eax
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.004083e4
pop ecx
test al, al
jne 0x409917
mov eax, dword [0x416014]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x24]
push eax
mov byte [ebp - 4], 2
call fcn.004079ca
pop ecx
push dword [eax]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 3
call fcn.00405fb4
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.004058ae
lea eax, [ebp - 0x10]
push eax
push esi
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x10], 0x2a
call fcn.00405969
lea eax, [ebp - 0x28]
push eax
call fcn.00407973
pop ecx
push dword [eax]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call fcn.00405fb4
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.004058ae
push 0xc
lea ecx, [ebp - 0x14]
call fcn.00405fdb
push 0xc
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0040cd50
add esp, 0xc
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 1
call fcn.004058ae
call dword [0x40110c]
mov dword [ebp - 0x78], eax
mov eax, dword [0x4178c8]
cmp eax, ebx
je 0x4099f5
mov eax, dword [eax + 0x17c]
push 0x903af9a2
imul eax, eax, 0xc26b98a4
push 0x8a366575
push 0x748f2dbe
push 0x13860fec
push 0x1e17cc80
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 4]
push 0x7c3bf7f
push 0xc66706f6
push 0x7514df8c
push 0xad531063
push 0xd5bd09da
or eax, 0xb0ef0461
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x24]
xor edx, edx
mov ecx, 0xfa612b5f
div ecx
push 0x74e79f94
push 0x270ff1c
push 0xad85e7d
push 0xce0b15ba
push 0x9c1caf91
push 0xe4bbd0da
push 0x51988eae
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x168]
xor edx, edx
mov ecx, 0x720aee85
div ecx
add esp, 0x44
push 0x1a3bc5dc
push 0x8aa2ae7a
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x74]
xor edx, edx
mov ecx, 0xf0b684d5
div ecx
push 0x28c9ecd5
push 0x8e0d04db
call edx
add esp, 0x10
and dword [ebp - 0x78], 0xfffffffe
cmp byte [ebp + 0xc], bl
je 0x409a04
or dword [ebp - 0x78], 2
jmp 0x409a08
and dword [ebp - 0x78], 0xfffffffd
call fcn.0040882c
test al, al
je 0x409a17
or dword [ebp - 0x78], 4
jmp 0x409a1b
and dword [ebp - 0x78], 0xfffffffb
cmp byte [ebp + 0x10], bl
je 0x409a26
or dword [ebp - 0x78], 8
jmp 0x409a2a
and dword [ebp - 0x78], 0xfffffff7
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x20]
call fcn.004076f2
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 0x409a61
xor esi, dword [ecx + eax]
add ecx, 4
cmp ecx, edx
jl 0x409a57
cmp eax, ebx
je 0x409a6c
push eax
call fcn.0040b3ae
pop ecx
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call fcn.004058ae
mov dword [ebp - 0x74], esi
call fcn.00406676
mov dword [ebp - 0x70], eax
call fcn.004066fb
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 0x409b19
mov eax, dword [eax + 0x108]
add eax, 0x34612266
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x80]
imul eax, eax, 0x9d88a06
push 0x98cac8c8
push 0xd07528c1
push 0xc97fda63
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x188]
xor edx, edx
mov ecx, 0x1f74cdff
div ecx
push 0x4a2b641a
push 0x63e67eae
push 0xf64239df
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x130]
push 0x4fa8355a
push 0xae8d2f6b
sub eax, 0x768b9f7b
call eax
add esp, 0x20
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 0x409b70
mov eax, dword [eax + 0xe8]
push 0x150d5e50
push 0x4faa2c68
add eax, 0x6376ac27
call eax
pop ecx
pop ecx
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 0x409cb9
mov eax, dword [eax + 0x12c]
xor edx, edx
mov ecx, 0x5bef0973
div ecx
push 0x9de82885
push 0x6a3fe7bc
push 0x31be4800
push 0x89679e44
push 0xe47e4080
push 0x2c84dad8
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xec]
push 0xc11d0f9f
push 0x2fc886c7
push 0x98cf51e0
push 0x9c3ede61
push 0x567e79
xor eax, 0x56cf42aa
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x180]
xor edx, edx
mov ecx, 0x94a401b4
div ecx
push 0xaf7713a0
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x84]
xor edx, edx
mov ecx, 0x21d5f9c
div ecx
push 0x8a90be83
push 0x4533fc3b
push 0x384b82c2
push 0xcee05669
push 0x7212110
push 0x883439a3
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xf8]
xor edx, edx
mov ecx, 0x10564923
div ecx
add esp, 0x48
push 0x2f24f93a
push 0x924ec753
push 0x76283f26
push 0xb1451b4f
push 0x48ba47ae
push 0x5199023c
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xdc]
xor edx, edx
mov ecx, 0xa9ee4c18
div ecx
push 0x422639b1
push 0x7d27a2d1
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x4c]
push 0xc25ebd6f
push 0xcabaf7c8
push 0xbe80b832
or eax, 0x11912e07
call eax
add esp, 0x2c
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 0x409dc4
mov eax, dword [eax + 0x164]
imul eax, eax, 0x9c435b60
push 0x1f7a35a9
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x184]
xor edx, edx
mov ecx, 0xb4504ece
div ecx
push 0x9a6156ab
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x164]
push 0x9cf3fee3
or eax, 0x9f5a5cbe
call eax
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0xb4]
xor edx, edx
mov ecx, 0x93825697
div ecx
push 0xdff23f36
push 0xbc8de5c4
push 0xd960c889
push 0x37b1d852
push 0x30227f2c
push 0x73920674
push 0x820c9c65
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x100]
xor edx, edx
mov ecx, 0x8d99f3d5
div ecx
push 0x7345d313
push 0x5f2436f0
push 0x6414a654
call edx
mov eax, dword [0x4178c8]
mov eax, dword [eax + 0x3c]
xor edx, edx
mov ecx, 0x8ef9a524
div ecx
push 0xac3e04bd
push 0xf1b706c0
push 0x18845098
push 0xc4737a20
push 0xd93e6602
push 0xebfd341e
call edx
add esp, 0x4c
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.00407d89
pop ecx
pop ecx
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 6
call fcn.00405fb4
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 1
call fcn.004058ae
inc esi
cmp esi, 8
jb 0x409dfe
mov ecx, edi
call fcn.00406d71
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], bl
call fcn.004058ae
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret