Function at 0x40c4d0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x3c
push ebx
push ebp
push esi
mov esi, dword [esp + 0x50]
cmp esi, eax
je 0x40c4ec
push esi
push eax
call fcn.00403ba0
add esp, 8
mov ecx, dword [0x41ee68]
mov eax, dword [esi]
mov edx, dword [ecx + 0x160]
mov esi, dword [esi + 4]
mov ebx, dword [ecx + 0x15c]
xor ebp, ebp
mov dword [esp + 0x4c], eax
cmp edx, ebp
jne 0x40c51e
push 0x1b
call fcn.00402de0
add esp, 4
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
push edi
mov edi, dword [ecx + 0x164]
mov ecx, dword [ecx + 0x168]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], ecx
cmp ebx, 0x7f
jne 0x40c592
cmp edx, 0x3f
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 4
jl 0x40c56b
lea eax, [esi + ecx*4 - 0xc]
lea edx, [ecx - 3]
mov ecx, dword [eax + 0xc]
xor dword [eax + 4], ecx
mov edi, ecx
shr edi, 0x1f
xor dword [eax], edi
add ecx, ecx
xor dword [eax - 4], ecx
mov dword [eax + 0xc], ebp
add eax, 0xfffffffc
dec edx
jne 0x40c550
mov ecx, dword [esi + 0xc]
mov eax, ecx
shr eax, 0x1f
xor dword [esi], eax
shl eax, 0x1f
xor dword [esi + 4], eax
xor ecx, eax
mov eax, dword [esp + 0x54]
mov dword [esi + 0xc], ecx
mov dword [eax], 4
cmp dword [esi + 0xc], ebp
jmp 0x40d053
cmp ebx, 0xa3
jne 0x40c6cc
cmp edx, 7
jne 0x40c644
cmp edi, 6
jne 0x40cce6
cmp ecx, 3
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, edi
jl 0x40c600
lea eax, [esi + ecx*4 - 0x18]
lea edx, [ecx - 5]
mov ecx, dword [eax + 0x18]
lea edi, [ecx + ecx]
xor edi, ecx
add edi, edi
add edi, edi
add edi, edi
mov ebx, ecx
shr ebx, 3
xor edi, ebx
xor edi, dword [eax + 4]
mov dword [eax + 0x18], ebp
xor edi, ecx
mov dword [eax + 4], edi
mov edi, ecx
shl edi, 0x1d
xor dword [eax], edi
mov edi, ecx
shr edi, 1
xor edi, ecx
shr edi, 0x1c
xor dword [eax + 8], edi
sub eax, 4
dec edx
jne 0x40c5c7
mov ecx, dword [esi + 0x14]
mov eax, ecx
shr eax, 3
xor dword [esi], eax
add eax, eax
add eax, eax
add eax, eax
mov edx, eax
shr edx, 1
xor edx, eax
shr edx, 0x1c
xor dword [esi + 4], edx
lea edx, [eax + eax]
xor edx, eax
add edx, edx
add edx, edx
add edx, edx
xor edx, dword [esi]
xor edx, eax
mov dword [esi], edx
xor ecx, eax
mov eax, dword [esp + 0x54]
mov dword [esi + 0x14], ecx
mov dword [eax], 6
cmp dword [esi + 0x14], ebp
jmp 0x40d053
cmp edx, 0x63
jne 0x40cce6
cmp edi, 0x61
jne 0x40cce6
cmp ecx, 3
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 6
jl 0x40c6a0
lea eax, [esi + ecx*4 - 0xc]
lea edx, [ecx - 5]
mov edi, edi
mov ecx, dword [eax + 0xc]
mov edi, ecx
shr edi, 2
xor edi, dword [eax + 4]
mov dword [eax + 0xc], ebp
xor edi, ecx
mov dword [eax + 4], edi
mov edi, ecx
shl edi, 0x1e
xor dword [eax], edi
mov edi, ecx
shr edi, 3
xor edi, ecx
xor dword [eax - 8], edi
shl ecx, 0x1d
xor dword [eax - 0xc], ecx
sub eax, 4
dec edx
jne 0x40c670
mov ecx, dword [esi + 0x14]
mov eax, ecx
shr eax, 3
xor dword [esi], eax
add eax, eax
add eax, eax
add eax, eax
xor dword [esi], eax
mov edx, eax
shl edx, 0x1e
xor dword [esi + 8], edx
mov edx, eax
shr edx, 2
xor edx, dword [esi + 0xc]
xor edx, eax
mov dword [esi + 0xc], edx
jmp 0x40c62d
cmp ebx, 0xe9
jne 0x40c83e
cmp edx, 0x4a
jne 0x40c74e
cmp edi, ebp
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 8
jl 0x40c71b
lea eax, [esi + ecx*4 - 0x1c]
lea edx, [ecx - 7]
mov ecx, dword [eax + 0x1c]
mov edi, ecx
shl edi, 0x17
xor dword [eax - 4], edi
mov edi, ecx
shr edi, 9
xor dword [eax], edi
lea edi, [ecx + ecx]
xor dword [eax + 8], edi
shr ecx, 0x1f
xor dword [eax + 0xc], ecx
mov dword [eax + 0x1c], ebp
add eax, 0xfffffffc
dec edx
jne 0x40c6f4
mov ecx, dword [esi + 0x1c]
mov eax, ecx
shr eax, 9
xor dword [esi], eax
mov edx, eax
shr eax, 0x16
xor dword [esi + 0xc], eax
mov eax, dword [esp + 0x54]
shl edx, 0xa
xor dword [esi + 8], edx
and ecx, 0x1ff
mov dword [esi + 0x1c], ecx
mov dword [eax], 8
cmp dword [esi + 0x1c], ebp
jmp 0x40d053
cmp edx, 0x9f
jne 0x40c7cd
cmp edi, ebp
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 8
jl 0x40c799
lea eax, [esi + ecx*4 - 0xc]
lea edx, [ecx - 7]
lea ecx, [ecx]
mov ecx, dword [eax + 0xc]
mov edi, ecx
shr edi, 0xa
xor dword [eax + 4], edi
mov edi, ecx
shl edi, 0x16
xor dword [eax], edi
mov edi, ecx
shr edi, 9
xor dword [eax - 0x10], edi
shl ecx, 0x17
xor dword [eax - 0x14], ecx
mov dword [eax + 0xc], ebp
sub eax, 4
dec edx
jne 0x40c770
mov ecx, dword [esi + 0x1c]
mov eax, ecx
shr eax, 9
xor dword [esi], eax
shl eax, 9
mov edx, eax
shl edx, 0x16
xor dword [esi + 0x10], edx
mov edx, eax
shr edx, 0xa
xor dword [esi + 0x14], edx
xor ecx, eax
mov eax, dword [esp + 0x54]
mov dword [esi + 0x1c], ecx
mov dword [eax], 8
cmp dword [esi + 0x1c], ebp
jmp 0x40d053
cmp edx, 0xc9
jne 0x40cce6
cmp edi, 0x69
jne 0x40cce6
cmp ecx, 9
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 8
jl 0x40c824
lea eax, [esi + ecx*4 - 0x10]
lea edx, [ecx - 7]
lea ebx, [ebx]
mov ecx, dword [eax + 0x10]
xor dword [eax + 0xc], ecx
xor dword [eax], ecx
mov edi, ecx
shr edi, 9
xor edi, dword [eax - 0xc]
mov dword [eax + 0x10], ebp
xor edi, ecx
shl ecx, 0x17
xor dword [eax - 0x10], ecx
mov dword [eax - 0xc], edi
sub eax, 4
dec edx
jne 0x40c800
mov ecx, dword [esi + 0x1c]
mov eax, ecx
shr eax, 9
xor dword [esi], eax
shl eax, 9
xor dword [esi], eax
xor dword [esi + 0xc], eax
xor dword [esi + 0x18], eax
jmp 0x40c7b6
cmp ebx, 0x67
jne 0x40c8b0
cmp edx, 9
jne 0x40cce6
cmp edi, ebp
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 4
jl 0x40c88d
lea eax, [esi + ecx*4 - 0x10]
lea edx, [ecx - 3]
mov ecx, dword [eax + 0x10]
mov edi, ecx
shr edi, 7
lea ebx, [ecx*4]
xor edi, ebx
xor dword [eax + 4], edi
mov edi, ecx
shl edi, 0x19
xor dword [eax], edi
shr ecx, 0x1e
xor dword [eax + 8], ecx
mov dword [eax + 0x10], ebp
sub eax, 4
dec edx
jne 0x40c863
mov ecx, dword [esi + 0xc]
mov eax, ecx
shr eax, 7
xor dword [esi], eax
shl eax, 7
mov edx, eax
shr edx, 0x1e
xor dword [esi + 4], edx
lea edx, [eax*4]
xor dword [esi], edx
jmp 0x40c57b
cmp ebx, 0x11b
jne 0x40c9f2
cmp edx, 0xc
jne 0x40c957
cmp edi, 7
jne 0x40cce6
cmp ecx, 5
jne 0x40cce6
dec eax
cmp eax, 9
jl 0x40c91e
lea ecx, [esi + eax*4 - 0x20]
lea edx, [eax - 8]
mov eax, dword [ecx + 0x20]
mov edi, eax
shl edi, 5
xor edi, eax
add edi, edi
add edi, edi
xor edi, eax
shl edi, 5
xor edi, eax
shl edi, 5
xor dword [ecx - 4], edi
mov edi, eax
shr edi, 5
xor edi, eax
shr edi, 2
xor edi, eax
shr edi, 5
xor edi, eax
shr edi, 0xf
xor dword [ecx], edi
mov dword [ecx + 0x20], ebp
add ecx, 0xfffffffc
dec edx
jne 0x40c8e4
mov ecx, dword [esi + 0x20]
mov eax, ecx
shr eax, 0x1b
mov edx, eax
shl edx, 5
xor edx, eax
add edx, edx
add edx, edx
xor edx, eax
shl edx, 5
xor edx, dword [esi]
and ecx, 0x7ffffff
xor edx, eax
mov eax, dword [esp + 0x54]
mov dword [esi + 0x20], ecx
mov dword [esi], edx
mov dword [eax], 9
cmp dword [esi + 0x20], ebp
jmp 0x40d053
cmp edx, 0xf9
jne 0x40cce6
cmp edi, 0xdb
jne 0x40cce6
cmp ecx, 0x1b
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 9
jl 0x40c9b7
lea eax, [esi + ecx*4 - 8]
lea edx, [ecx - 8]
mov ecx, dword [eax + 8]
mov edi, ecx
shr edi, 2
xor dword [eax + 4], edi
mov edi, ecx
shl edi, 0x1e
xor edi, ecx
xor dword [eax], edi
mov edi, ecx
shr edi, 0x1b
xor edi, dword [eax - 0x18]
mov dword [eax + 8], ebp
xor edi, ecx
shl ecx, 5
xor dword [eax - 0x1c], ecx
mov dword [eax - 0x18], edi
sub eax, 4
dec edx
jne 0x40c987
mov ecx, dword [esi + 0x20]
mov eax, ecx
shr eax, 0x1b
xor dword [esi], eax
shl eax, 0x1b
xor dword [esi], eax
mov edx, eax
shl edx, 0x1e
xor edx, dword [esi + 0x18]
xor ecx, eax
xor edx, eax
mov dword [esi + 0x18], edx
mov edx, eax
mov eax, dword [esp + 0x54]
shr edx, 2
xor dword [esi + 0x1c], edx
mov dword [esi + 0x20], ecx
mov dword [eax], 9
cmp dword [esi + 0x20], ebp
jmp 0x40d053
cmp ebx, 0x139
jne 0x40ca63
cmp edx, 0x79
jne 0x40cce6
cmp edi, ebp
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 0xa
jl 0x40ca3c
lea eax, [esi + ecx*4 - 0x24]
lea edx, [ecx - 9]
lea ebx, [ebx]
mov ecx, dword [eax + 0x24]
xor dword [eax + 0xc], ecx
mov edi, ecx
shr edi, 0x19
xor dword [eax], edi
shl ecx, 7
xor dword [eax - 4], ecx
mov dword [eax + 0x24], ebp
add eax, 0xfffffffc
dec edx
jne 0x40ca20
mov ecx, dword [esi + 0x24]
mov eax, ecx
shr eax, 0x19
xor dword [esi], eax
shl eax, 0x19
xor dword [esi + 0xc], eax
xor ecx, eax
mov eax, dword [esp + 0x54]
mov dword [esi + 0x24], ecx
mov dword [eax], 0xa
cmp dword [esi + 0x24], ebp
jmp 0x40d053
cmp ebx, 0x17b
jne 0x40cb10
cmp edx, 0xfd
jne 0x40cce6
cmp edi, 0xfb
jne 0x40cce6
cmp ecx, 0x3b
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 0xc
jl 0x40cad2
lea eax, [esi + ecx*4 - 0x10]
lea edx, [ecx - 0xb]
nop
mov ecx, dword [eax + 0x10]
xor dword [eax - 0x18], ecx
mov edi, ecx
shr edi, 0x1e
xor dword [eax + 4], edi
lea edi, [ecx*4]
xor edi, dword [eax]
mov dword [eax + 0x10], ebp
xor edi, ecx
mov dword [eax], edi
mov edi, ecx
shr edi, 0x1b
xor dword [eax - 0x1c], edi
shl ecx, 5
xor dword [eax - 0x20], ecx
sub eax, 4
dec edx
jne 0x40caa0
mov ecx, dword [esi + 0x2c]
mov eax, ecx
shr eax, 0x1b
xor dword [esi], eax
shl eax, 0x1b
xor dword [esi + 4], eax
lea edx, [eax*4]
xor edx, dword [esi + 0x1c]
xor ecx, eax
xor edx, eax
mov dword [esi + 0x1c], edx
mov edx, eax
mov eax, dword [esp + 0x54]
shr edx, 0x1e
xor dword [esi + 0x20], edx
mov dword [esi + 0x2c], ecx
mov dword [eax], 0xc
cmp dword [esi + 0x2c], ebp
jmp 0x40d053
cmp ebx, 0x23b
jne 0x40cc59
cmp edx, 0xa
jne 0x40cbbd
cmp edi, 5
jne 0x40cce6
cmp ecx, 2
jne 0x40cce6
dec eax
cmp eax, 0x12
jl 0x40cb81
lea ecx, [esi + eax*4 - 0x44]
lea edx, [eax - 0x11]
mov eax, dword [ecx + 0x44]
mov edi, eax
shl edi, 5
xor edi, eax
add edi, edi
add edi, edi
add edi, edi
xor edi, eax
add edi, edi
add edi, edi
xor edi, eax
shl edi, 5
xor dword [ecx - 4], edi
mov edi, eax
shr edi, 2
xor edi, eax
shr edi, 3
xor edi, eax
shr edi, 5
xor edi, eax
shr edi, 0x11
xor dword [ecx], edi
mov dword [ecx + 0x44], ebp
add ecx, 0xfffffffc
dec edx
jne 0x40cb44
mov ecx, dword [esi + 0x44]
mov eax, ecx
shr eax, 0x1b
mov edx, eax
shl edx, 5
xor edx, eax
add edx, edx
add edx, edx
add edx, edx
xor edx, eax
add edx, edx
add edx, edx
xor edx, dword [esi]
and ecx, 0x7ffffff
xor edx, eax
mov eax, dword [esp + 0x54]
mov dword [esi + 0x44], ecx
mov dword [esi], edx
mov dword [eax], 0x12
cmp dword [esi + 0x44], ebp
jmp 0x40d053
cmp edx, 0x1fb
jne 0x40cce6
cmp edi, 0x1db
jne 0x40cce6
cmp ecx, 0x1a1
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 0x12
jl 0x40cc1f
lea eax, [esi + ecx*4 - 0xc]
lea edx, [ecx - 0x11]
mov ecx, dword [eax + 0xc]
xor dword [eax + 4], ecx
xor dword [eax], ecx
mov edi, ecx
shr edi, 0x1a
xor dword [eax - 4], edi
mov edi, ecx
shl edi, 6
xor dword [eax - 8], edi
mov edi, ecx
shr edi, 0x1b
xor dword [eax - 0x38], edi
shl ecx, 5
xor dword [eax - 0x3c], ecx
mov dword [eax + 0xc], ebp
add eax, 0xfffffffc
dec edx
jne 0x40cbf0
mov ecx, dword [esi + 0x44]
mov eax, ecx
shr eax, 0x1b
xor dword [esi], eax
shl eax, 0x1b
xor dword [esi + 0x38], eax
xor dword [esi + 0x3c], eax
mov edx, eax
shl edx, 6
xor dword [esi + 0x30], edx
mov edx, eax
xor ecx, eax
mov eax, dword [esp + 0x54]
shr edx, 0x1a
xor dword [esi + 0x34], edx
mov dword [esi + 0x44], ecx
mov dword [eax], 0x12
cmp dword [esi + 0x44], ebp
jmp 0x40d053
cmp ebx, 0x4c7
jne 0x40cce6
cmp edx, 0xff
jne 0x40cce6
lea ecx, [eax - 1]
cmp ecx, 0x27
jl 0x40cca9
lea eax, [esi + ecx*4 - 0x7c]
lea edx, [ecx - 0x26]
lea esp, [esp]
mov ecx, dword [eax + 0x7c]
mov edi, ecx
shr edi, 8
xor dword [eax + 4], edi
mov edi, ecx
shl edi, 0x18
xor dword [eax], edi
mov edi, ecx
shr edi, 7
xor dword [eax - 0x1c], edi
shl ecx, 0x19
xor dword [eax - 0x20], ecx
mov dword [eax + 0x7c], ebp
sub eax, 4
dec edx
jne 0x40cc80
mov ecx, dword [esi + 0x98]
mov eax, ecx
shr eax, 7
xor dword [esi], eax
shl eax, 7
mov edx, eax
shl edx, 0x18
xor dword [esi + 0x1c], edx
mov edx, eax
xor ecx, eax
mov eax, dword [esp + 0x54]
shr edx, 8
xor dword [esi + 0x20], edx
mov dword [esi + 0x98], ecx
mov dword [eax], 0x27
cmp dword [esi + 0x98], ebp
jmp 0x40d053
mov eax, ebx
cdq
and edx, 0x1f
xor ebp, ebp
lea edi, [edx + eax]
sar edi, 5
inc edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
cmp dword [esp + 0x50], edi
jg 0x40cd24
mov eax, dword [esp + 0x54]
call fcn.0040b660
cmp eax, ebx
jle 0x40d05e
mov eax, ebx
and eax, 0x8000001f
jns 0x40cd32
dec eax
or eax, 0xffffffe0
inc eax
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x30], eax
mov eax, dword [0x41ee68]
mov ecx, ebx
sub ecx, dword [eax + 0x160]
cmp ecx, 0x20
jge 0x40cdcd
mov eax, dword [esp + 0x54]
lea edi, [ebx + 1]
call fcn.0040b660
cmp eax, edi
jl 0x40d05e
mov esi, dword [esp + 0x54]
or ebp, 0xffffffff
sub ebp, ebx
mov eax, dword [0x41ee68]
mov ecx, dword [eax + 0x1ec]
mov edx, dword [eax + 0x138]
push ecx
push edx
call fcn.00403ba0
mov eax, esi
call fcn.0040b660
lea ecx, [ebp + eax]
mov eax, dword [0x41ee68]
mov edx, dword [eax + 0x1ec]
push edx
call fcn.0040b690
mov eax, dword [0x41ee68]
mov ecx, dword [eax + 0x1ec]
push esi
push ecx
push esi
call fcn.0040c240
add esp, 0x18
mov eax, esi
call fcn.0040b660
cmp eax, edi
jge 0x40cd70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
inc eax
and ecx, 0x8000001f
mov dword [esp + 0x18], eax
jns 0x40cdea
dec ecx
or ecx, 0xffffffe0
inc ecx
mov eax, 0x20
sub eax, ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x40], eax
cmp dword [esp + 0x1c], ebp
je 0x40ce64
mov ecx, ebx
sub ecx, dword [esp + 0x1c]
mov eax, ecx
cdq
and edx, 0x1f
lea ebp, [edx + eax]
sar ebp, 5
inc ebp
and ecx, 0x8000001f
mov dword [esp + 0x2c], ebp
jns 0x40ce23
dec ecx
or ecx, 0xffffffe0
inc ecx
mov dword [esp + 0x20], ecx
mov eax, 0x20
sub eax, ecx
mov dword [esp + 0x38], eax
mov ecx, ebx
sub ecx, dword [esp + 0x14]
mov eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
inc eax
and ecx, 0x8000001f
mov dword [esp + 0x28], eax
jns 0x40ce55
dec ecx
or ecx, 0xffffffe0
inc ecx
mov eax, 0x20
sub eax, ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x50]
dec edx
cmp edx, edi
jl 0x40cf91
mov eax, edx
sub eax, dword [esp + 0x28]
mov ecx, edx
sub ecx, dword [esp + 0x2c]
lea ebp, [esi + eax*4 + 4]
lea eax, [esi + ecx*4 + 4]
mov ecx, edx
sub ecx, dword [esp + 0x18]
mov dword [esp + 0x10], eax
lea eax, [esi + ecx*4 + 4]
mov ecx, edx
sub ecx, edi
mov dword [esp + 0x14], ebp
mov dword [esp + 0x50], eax
lea ebx, [esi + ecx*4 + 4]
jmp 0x40ceb0
cmp dword [esp + 0x30], 0
mov eax, dword [esi + edx*4]
mov dword [esi + edx*4], 0
jne 0x40cec5
xor dword [ebx], eax
jmp 0x40cede
mov ecx, dword [esp + 0x30]
mov ebp, eax
shr ebp, cl
mov ecx, dword [esp + 0x44]
xor dword [ebx], ebp
mov ebp, eax
shl ebp, cl
xor dword [ebx - 4], ebp
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x34], 0
jne 0x40ceed
mov ecx, dword [esp + 0x50]
xor dword [ecx], eax
jmp 0x40cf0e
mov ecx, dword [esp + 0x34]
mov ebp, eax
shr ebp, cl
mov ecx, dword [esp + 0x50]
xor dword [ecx], ebp
mov ecx, dword [esp + 0x40]
mov ebp, eax
shl ebp, cl
mov ecx, dword [esp + 0x50]
xor dword [ecx - 4], ebp
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x1c], 0
je 0x40cf6f
cmp dword [esp + 0x20], 0
jne 0x40cf24
mov ecx, dword [esp + 0x10]
xor dword [ecx], eax
jmp 0x40cf45
mov ecx, dword [esp + 0x20]
mov ebp, eax
shr ebp, cl
mov ecx, dword [esp + 0x10]
xor dword [ecx], ebp
mov ecx, dword [esp + 0x38]
mov ebp, eax
shl ebp, cl
mov ecx, dword [esp + 0x10]
xor dword [ecx - 4], ebp
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x24], 0
jne 0x40cf51
xor dword [ebp], eax
jmp 0x40cf6f
mov ecx, dword [esp + 0x24]
mov ebp, eax
shr ebp, cl
mov dword [esp + 0x48], eax
mov ecx, ebp
mov ebp, dword [esp + 0x14]
xor dword [ebp], ecx
mov ecx, dword [esp + 0x3c]
shl eax, cl
xor dword [ebp - 4], eax
mov eax, 4
sub dword [esp + 0x50], eax
sub dword [esp + 0x10], eax
dec edx
sub ebp, eax
sub ebx, eax
mov dword [esp + 0x14], ebp
cmp edx, edi
jge 0x40ceb0
mov ebp, dword [esp + 0x2c]
mov eax, dword [esi + edi*4 - 4]
mov ecx, dword [esp + 0x30]
shr eax, cl
test eax, eax
je 0x40d048
xor dword [esi], eax
shl eax, cl
mov ecx, dword [esp + 0x34]
mov edx, edi
sub edx, dword [esp + 0x18]
test ecx, ecx
jne 0x40cfbd
xor dword [esi + edx*4], eax
lea ecx, [esi + edx*4]
jmp 0x40cfd7
mov ebx, eax
shr ebx, cl
lea edx, [esi + edx*4]
xor dword [edx], ebx
cmp edi, dword [esp + 0x18]
jle 0x40cfd7
mov ecx, dword [esp + 0x40]
mov ebx, eax
shl ebx, cl
xor dword [edx - 4], ebx
cmp dword [esp + 0x1c], 0
je 0x40d044
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x40cff2
mov ecx, edi
sub ecx, ebp
xor dword [esi + ecx*4], eax
lea ecx, [esi + ecx*4]
jmp 0x40d00e
mov ebx, eax
mov edx, edi
shr ebx, cl
sub edx, ebp
lea edx, [esi + edx*4]
xor dword [edx], ebx
cmp edi, ebp
jle 0x40d00e
mov ecx, dword [esp + 0x38]
mov ebx, eax
shl ebx, cl
xor dword [edx - 4], ebx
mov ecx, dword [esp + 0x24]
test ecx, ecx
jne 0x40d024
mov ecx, edi
sub ecx, dword [esp + 0x28]
xor dword [esi + ecx*4], eax
lea ecx, [esi + ecx*4]
jmp 0x40d044
mov ebx, dword [esp + 0x28]
mov ebp, eax
mov edx, edi
shr ebp, cl
sub edx, ebx
lea edx, [esi + edx*4]
xor dword [edx], ebp
cmp edi, ebx
jle 0x40d044
mov ecx, dword [esp + 0x3c]
mov ebx, eax
shl ebx, cl
xor dword [edx - 4], ebx
xor dword [esi + edi*4 - 4], eax
mov eax, dword [esp + 0x54]
mov dword [eax], edi
cmp dword [esi + edi*4 - 4], 0
jne 0x40d05e
push eax
call fcn.004038a0
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret