Function at 0x497370
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x636e00
mov eax, dword fs:[0]
push eax
sub esp, 0x64
mov eax, dword [0x71de04]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x68], eax
xor eax, eax
mov dword [ebp - 0x18], eax
mov word [ebp - 0x14], ax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x34], 7
mov dword [ebp - 0x38], eax
mov word [ebp - 0x48], ax
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], 7
mov dword [ebp - 0x20], eax
mov word [ebp - 0x30], ax
mov edi, dword [esi + 0x1c8]
mov byte [ebp - 4], 1
mov dword [ebp - 0x54], edi
test edi, edi
je 0x497412
mov eax, dword [esi + 0x228]
mov dword [esi + 0x1b0], eax
mov eax, dword [esi + 0x224]
mov dword [esi + 0x1b4], eax
mov dword [esi + 0x1a8], 0
mov dword [esi + 0x1ac], 0
mov eax, dword [esi + 0x228]
xor edx, edx
mov ebx, dword [esi + 0x224]
mov dword [esi + 0x568], 1
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x50], edx
test edi, edi
jle 0x497615
lea edi, [esi + 0x1b8]
nop
mov ecx, dword [edi + 0x14]
cmp ecx, 8
jb 0x49744c
mov eax, dword [edi]
jmp 0x49744e
mov eax, edi
mov ax, word [eax + edx*2]
mov word [ebp - 0x5a], ax
mov word [ebp - 0x18], ax
cmp ecx, 8
jb 0x497463
mov eax, dword [edi]
jmp 0x497465
mov eax, edi
mov ecx, 0xff
cmp word [eax + edx*2], cx
mov ecx, dword [edi + 0x14]
jne 0x497523
cmp ecx, 8
jb 0x497480
mov eax, dword [edi]
jmp 0x497482
mov eax, edi
mov ecx, 0xff
cmp word [eax + edx*2 + 2], cx
mov ecx, dword [edi + 0x14]
jne 0x497523
add edx, 2
cmp ecx, 8
jb 0x4974a1
mov eax, dword [edi]
jmp 0x4974a3
mov eax, edi
movzx eax, word [eax + edx*2]
add edx, eax
cmp ecx, 8
jb 0x4974b2
mov eax, dword [edi]
jmp 0x4974b4
mov eax, edi
movzx eax, word [eax + edx*2 + 2]
add edx, 2
mov ecx, dword [esi + 0xd0]
add edx, eax
imul ecx, eax
mov dword [ebp - 0x50], edx
add ecx, dword [esi + 0x48c]
add ecx, dword [ebp - 0x58]
cmp ecx, dword [esi + 0x22c]
jl 0x4974f2
mov eax, dword [esi + 0x228]
mov dword [ebp - 0x58], eax
mov eax, dword [esi + 0xcc]
add eax, dword [esi + 0x490]
add ebx, eax
mov ecx, dword [esi + 0xcc]
add ecx, dword [esi + 0x490]
lea eax, [ecx + ebx]
cmp eax, dword [esi + 0x230]
jl 0x497523
mov eax, dword [ebp - 0x4c]
mov ebx, dword [esi + 0x224]
imul ecx, eax
inc eax
mov dword [ebp - 0x4c], eax
sub ebx, ecx
or edx, 0xffffffff
jmp 0x4975e2
cmp word [ebp - 0x5a], 0xa
jne 0x497546
mov eax, dword [esi + 0xcc]
add eax, dword [esi + 0x490]
mov ecx, dword [esi + 0x1b0]
add ebx, eax
mov dword [ebp - 0x58], ecx
jmp 0x4975df
push dword [ebp - 0x68]
lea eax, [ebp - 0x18]
mov ecx, esi
push dword [ebp + 0xc]
push eax
call fcn.004928d0
mov edx, dword [ebp - 0x50]
lea eax, [edx + 1]
cmp dword [ebp - 0x54], eax
je 0x49758b
cmp dword [edi + 0x14], 8
jb 0x49756c
mov eax, dword [edi]
jmp 0x49756e
mov eax, edi
push dword [ebp - 0x68]
mov ax, word [eax + edx*2 + 2]
mov ecx, esi
push dword [ebp + 0xc]
mov word [ebp - 0x18], ax
lea eax, [ebp - 0x18]
push eax
call fcn.004928d0
mov edx, dword [ebp - 0x50]
mov eax, dword [esi + 0xd0]
add eax, dword [ebp - 0x58]
cmp eax, dword [esi + 0x22c]
jl 0x4975b5
mov eax, dword [esi + 0x1b0]
mov dword [ebp - 0x58], eax
mov eax, dword [esi + 0xcc]
add eax, dword [esi + 0x490]
add ebx, eax
jmp 0x4975df
mov ecx, dword [esi + 0xcc]
add ecx, dword [esi + 0x490]
lea eax, [ecx + ebx]
cmp eax, dword [esi + 0x230]
jge 0x497509
mov eax, dword [esi + 0x48c]
add eax, dword [esi + 0xc8]
add dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x4c]
inc edx
mov dword [ebp - 0x50], edx
cmp edx, dword [ebp - 0x54]
jl 0x497440
mov edi, dword [ebp - 0x54]
cmp eax, 1
je 0x497615
mov ecx, dword [esi + 0xcc]
dec eax
add ecx, dword [esi + 0x490]
imul ecx, eax
mov eax, dword [esi + 0x224]
sub eax, ecx
mov dword [esi + 0x1b4], eax
mov eax, dword [esi + 0x980]
lea edx, [ebp - 0x60]
push edx
push 0x662ce8
mov dword [ebp - 0x58], 1
mov eax, dword [eax + 0x48]
push eax
mov ecx, dword [eax]
call dword [ecx]
push dword [esi + 0x230]
mov ecx, dword [esi + 0xa64]
push dword [esi + 0x22c]
push dword [ebp - 0x60]
call fcn.00442ea0
mov eax, dword [ebp - 0x60]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esi + 0xa64]
mov eax, dword [eax + 0x188]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc0]
mov eax, dword [esi + 0x98c]
test eax, eax
je 0x49767d
cmp eax, dword [esi + 0x1b4]
jl 0x4976a8
mov eax, dword [esi + 0x48c]
mov ecx, dword [esi + 0x1b4]
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
mov eax, dword [esi + 0x1b0]
sub ecx, 2
sub eax, 2
mov dword [esi + 0x98c], ecx
mov dword [esi + 0x988], eax
xor ebx, ebx
test edi, edi
jle 0x497bce
lea edi, [esi + 0x1b8]
cmp dword [edi + 0x14], 8
jb 0x4976c2
mov eax, dword [edi]
jmp 0x4976c4
mov eax, edi
mov ax, word [eax + ebx*2]
mov ecx, esi
push dword [ebp - 0x68]
mov word [ebp - 0x18], ax
xor eax, eax
push dword [ebp + 0xc]
mov word [ebp - 0x16], ax
lea eax, [ebp - 0x18]
push eax
call fcn.004928d0
push 0
push 0x646fb4
lea ecx, [ebp - 0x48]
call fcn.00415720
push 0
push 0x646fb4
lea ecx, [ebp - 0x30]
call fcn.00415720
mov ecx, dword [edi + 0x14]
cmp ecx, 8
jb 0x49770d
mov eax, dword [edi]
jmp 0x49770f
mov eax, edi
mov edx, 0xff
cmp word [eax + ebx*2], dx
jne 0x497935
cmp ecx, 8
jb 0x497727
mov eax, dword [edi]
jmp 0x497729
mov eax, edi
cmp word [eax + ebx*2 + 2], dx
jne 0x497935
cmp ecx, 8
jb 0x49773d
mov eax, dword [edi]
jmp 0x49773f
mov eax, edi
movzx eax, word [eax + ebx*2 + 4]
add ebx, 3
mov dword [ebp - 0x5c], eax
test eax, eax
je 0x497773
mov dword [ebp - 0x50], eax
cmp dword [edi + 0x14], 8
jb 0x49775b
mov eax, dword [edi]
jmp 0x49775d
mov eax, edi
movzx eax, word [eax + ebx*2]
lea ecx, [ebp - 0x48]
push eax
push 1
call fcn.00415540
inc ebx
sub dword [ebp - 0x50], 1
jne 0x497751
cmp dword [edi + 0x14], 8
jb 0x49777d
mov eax, dword [edi]
jmp 0x49777f
mov eax, edi
movzx ecx, word [eax + ebx*2]
inc ebx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x4c], ebx
test ecx, ecx
je 0x4977b9
mov dword [ebp - 0x4c], ecx
cmp dword [edi + 0x14], 8
jb 0x49779b
mov eax, dword [edi]
jmp 0x49779d
mov eax, edi
movzx eax, word [eax + ebx*2]
lea ecx, [ebp - 0x30]
push eax
push 1
call fcn.00415540
inc ebx
sub dword [ebp - 0x4c], 1
jne 0x497791
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x4c], ebx
mov eax, dword [esi + 0x48c]
add eax, dword [esi + 0xc8]
imul eax, ecx
inc ecx
imul ecx, dword [esi + 0xd0]
cdq
idiv dword [ebp - 0x5c]
add ecx, dword [esi + 0x1b0]
mov dword [ebp - 0x5c], eax
mov eax, dword [esi + 0x564]
mov dword [ebp - 0x6c], eax
mov dword [esi + 0x564], 1
cmp ecx, dword [esi + 0x22c]
jl 0x497897
mov ecx, esi
mov dword [ebp - 0x64], 1
call fcn.00497d30
mov eax, dword [esi + 0x1a8]
mov ecx, esi
cmp eax, dword [esi + 0xb4]
jge 0x497849
call fcn.00493e60
lea eax, [ebx + 3]
cmp dword [ebp - 0x54], eax
jg 0x497897
push dword [esi + 0x490]
mov ecx, esi
push dword [esi + 0x48c]
call fcn.004961f0
mov dword [esi + 0x1a4], 0
jmp 0x497bce
push dword [esi + 0x490]
push dword [esi + 0x48c]
call fcn.004961f0
cmp dword [esi + 0x1a8], 0
mov eax, dword [esi + 0x228]
mov dword [esi + 0x1b0], eax
je 0x497897
mov eax, dword [esi + 0x570]
mov dword [esi + 0x1f4], 1
mov dword [esi + 0x1f8], 1
cmp dword [esi + 0x56c], eax
je 0x497897
mov dword [esi + 0x56c], eax
sub esp, 0x18
xor eax, eax
mov ecx, esp
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [ebp - 0x48]
push eax
call fcn.00415600
push dword [ebp - 0x50]
mov ecx, esi
push dword [ebp - 0x5c]
call fcn.00492230
cmp dword [ebp - 0x50], 0
mov dword [ebp - 0x5c], 0
jbe 0x497927
mov edi, dword [ebp - 0x5c]
mov ebx, dword [ebp - 0x50]
nop dword [eax + eax]
cmp dword [ebp - 0x1c], 8
lea eax, [ebp - 0x30]
push 0
cmovae eax, dword [ebp - 0x30]
mov ecx, esi
mov ax, word [eax + edi*2]
xor ax, word [esi + 0x976]
mov word [ebp - 0x18], ax
lea eax, [ebp - 0x18]
push eax
call fcn.00491990
mov eax, dword [esi + 0x48c]
inc edi
add eax, dword [esi + 0xc8]
add dword [esi + 0x1b0], eax
cmp edi, ebx
jl 0x4978e0
mov ebx, dword [ebp - 0x4c]
lea edi, [esi + 0x1b8]
mov eax, dword [ebp - 0x6c]
mov dword [esi + 0x564], eax
jmp 0x497b50
mov ax, word [ebp - 0x18]
mov ecx, 0xfe
inc ebx
cmp ax, cx
je 0x497aff
cmp word [ebp - 0x16], cx
je 0x497aff
cmp dword [esi + 0x220], 1
jne 0x497972
push dword [esi + 0x490]
mov ecx, esi
push dword [esi + 0x48c]
call fcn.004961f0
mov ax, word [ebp - 0x18]
xor ax, word [esi + 0x976]
mov ecx, esi
mov word [ebp - 0x18], ax
lea eax, [ebp - 0x18]
push 0
push eax
call fcn.00491990
mov ecx, esi
call fcn.00497d30
mov eax, dword [esi + 0xd0]
mov ecx, dword [esi + 0x1b0]
add eax, ecx
mov dword [ebp - 0x64], 0
cmp eax, dword [esi + 0x22c]
jl 0x497ae9
mov eax, dword [esi + 0x228]
mov ecx, esi
mov dword [esi + 0x1b0], eax
call fcn.00497d30
mov ecx, dword [esi + 0xcc]
mov eax, dword [esi + 0x1b4]
mov edx, dword [esi + 0x490]
mov dword [ebp - 0x64], 1
lea eax, [eax + ecx*2]
add eax, edx
cmp eax, dword [esi + 0x230]
jl 0x497a99
mov ebx, dword [ebp - 0x58]
add ecx, edx
mov eax, dword [esi + 0x228]
imul ecx, ebx
inc ebx
mov dword [esi + 0x1b0], eax
mov eax, dword [esi + 0x224]
mov dword [ebp - 0x58], ebx
sub eax, ecx
mov dword [esi + 0x1b4], eax
cmp eax, edx
jle 0x497b5d
mov eax, dword [esi + 0xa64]
push 0
push 0
mov eax, dword [eax + 0x188]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc4]
mov ecx, esi
call fcn.00497cf0
mov eax, dword [esi + 0x980]
lea edx, [ebp - 0x60]
xor ebx, ebx
mov dword [esi + 0x1a8], ebx
push edx
mov eax, dword [eax + 0x48]
push 0x662ce8
push eax
mov ecx, dword [eax]
call dword [ecx]
push dword [esi + 0x230]
mov ecx, dword [esi + 0xa64]
push dword [esi + 0x22c]
push dword [ebp - 0x60]
call fcn.00442ea0
mov eax, dword [ebp - 0x60]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esi + 0xa64]
mov eax, dword [eax + 0x188]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc0]
jmp 0x497b50
mov eax, dword [esi + 0x1b4]
inc dword [esi + 0x1a8]
add eax, ecx
inc dword [esi + 0x1ac]
add eax, edx
mov ecx, dword [ebp - 0x54]
mov dword [esi + 0x1b4], eax
cmp ebx, ecx
jle 0x497b55
cmp dword [edi + 0x14], 8
jb 0x497aca
mov eax, dword [edi]
jmp 0x497acc
mov eax, edi
mov ax, word [eax + ebx*2]
xor edx, edx
mov word [ebp - 0x16], dx
mov edx, 0xfe
mov word [ebp - 0x18], ax
cmp ax, dx
jne 0x497b53
add ebx, 3
jmp 0x497b53
mov eax, dword [esi + 0x48c]
add eax, dword [esi + 0xc8]
add eax, ecx
mov dword [esi + 0x1b0], eax
jmp 0x497b50
mov ecx, esi
call fcn.00497d30
cmp dword [ebp - 0x64], 0
jne 0x497b50
push dword [esi + 0x490]
mov ecx, esi
push dword [esi + 0x48c]
call fcn.004961f0
mov eax, dword [esi + 0x228]
inc dword [esi + 0x1a8]
mov dword [esi + 0x1b0], eax
mov eax, dword [esi + 0x490]
add eax, dword [esi + 0xcc]
add dword [esi + 0x1b4], eax
inc dword [esi + 0x1ac]
mov dword [ebp - 0x64], 1
mov ecx, dword [ebp - 0x54]
cmp ebx, ecx
jl 0x4976b8
jmp 0x497bce
cmp dword [esi + 0x220], 1
jne 0x497b79
push dword [esi + 0x490]
mov ecx, esi
push dword [esi + 0x48c]
call fcn.004961f0
mov ecx, esi
call fcn.00493e90
cmp dword [esi + 0x1a8], 0
je 0x497bb1
mov eax, dword [esi + 0x570]
mov dword [esi + 0x1f4], 1
mov dword [esi + 0x1f8], 1
cmp dword [esi + 0x56c], eax
je 0x497bb1
mov dword [esi + 0x56c], eax
push dword [esi + 0x490]
mov ecx, esi
mov dword [esi + 0x568], 0
push dword [esi + 0x48c]
call fcn.004961f0
mov eax, dword [esi + 0xa64]
push 0
push 0
mov eax, dword [eax + 0x188]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc4]
mov eax, dword [esi + 0x48c]
add eax, dword [esi + 0xc8]
add dword [esi + 0x1b0], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 8
jb 0x497c52
mov ecx, dword [ebp - 0x30]
inc eax
cmp eax, 0x7fffffff
jbe 0x497c11
call fcn.005e567f
add eax, eax
cmp eax, 0x1000
jb 0x497c49
test byte [ebp - 0x30], 0x1f
je 0x497c25
call fcn.005e567f
mov eax, dword [ecx - 4]
cmp eax, ecx
jb 0x497c31
call fcn.005e567f
sub ecx, eax
cmp ecx, 4
jae 0x497c3d
call fcn.005e567f
cmp ecx, 0x23
jbe 0x497c47
call fcn.005e567f
mov ecx, eax
push ecx
call fcn.004a94b8
add esp, 4
xor eax, eax
mov dword [ebp - 0x1c], 7
mov word [ebp - 0x30], ax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x20], 0
cmp eax, 8
jb 0x497cbf
mov ecx, dword [ebp - 0x48]
inc eax
cmp eax, 0x7fffffff
jbe 0x497c7e
call fcn.005e567f
add eax, eax
cmp eax, 0x1000
jb 0x497cb6
test byte [ebp - 0x48], 0x1f
je 0x497c92
call fcn.005e567f
mov eax, dword [ecx - 4]
cmp eax, ecx
jb 0x497c9e
call fcn.005e567f
sub ecx, eax
cmp ecx, 4
jae 0x497caa
call fcn.005e567f
cmp ecx, 0x23
jbe 0x497cb4
call fcn.005e567f
mov ecx, eax
push ecx
call fcn.004a94b8
add esp, 4
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005e0710
mov esp, ebp
pop ebp
ret 8