Function at 0x412c20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x3c
mov dword [ebp - 0x44], ecx
mov eax, dword [0x4ac2c0]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
lea edx, [eax + 1]
imul edx, eax
mov eax, edx
xor eax, 0xfffffffe
test eax, edx
mov eax, 0xac64d703
sete byte [ebp - 0x19]
cmp ecx, 0xa
setl byte [ebp - 0x1a]
jmp 0x412ca0
mov eax, dword [0x4ae1e0]
mov edi, 0x74f8a245
mov ebx, 0xeab363b9
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0xeab363b9
sete cl
cmove eax, edi
cmp dword [0x4ae1dc], 0xa
setl dl
cmovge eax, ebx
xor dl, cl
cmovne eax, edi
nop dword [eax]
cmp eax, 0x1315ce34
jg 0x412d20
cmp eax, 0xb9d8219b
jle 0x412db0
cmp eax, 0xf6593270
jg 0x412e7b
cmp eax, 0xd9c66c97
jle 0x412f88
cmp eax, 0xe6c38311
jg 0x413166
cmp eax, 0xd9c66c98
je 0x4133ca
cmp eax, 0xdcb30538
jne 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0xaa748473
lea eax, [edx + 1]
imul eax, edx
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
sete dl
cmp ecx, 0xa
setl dh
xor dh, dl
mov edx, 0xae5b70ce
jmp 0x413723
cmp eax, 0x4a294b20
jle 0x412e10
cmp eax, 0x657e44af
jg 0x412eb4
cmp eax, 0x560884dd
jle 0x412fbc
cmp eax, 0x62527912
jg 0x4131ac
cmp eax, 0x560884de
je 0x4133e0
cmp eax, 0x5f715738
jne 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov esi, 0xe6c38312
lea eax, [edx + 1]
imul eax, edx
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
sete dl
cmp ecx, 0xa
setl dh
xor dh, dl
mov edx, 0xf88741f2
cmovne edx, esi
cmp eax, 0xffffffff
mov eax, edx
cmove eax, esi
cmp ecx, 0xa
mov ecx, dword [ebp - 0x14]
cmovge eax, edx
mov ecx, dword [ecx]
mov dword [ebp - 0x48], ecx
jmp 0x412ca0
cmp eax, 0xa3510d9a
jle 0x412ef3
cmp eax, 0xaa4fc17e
jle 0x412ffa
cmp eax, 0xac64d702
jg 0x4131f1
cmp eax, 0xaa4fc17f
je 0x4134d9
cmp eax, 0xaa748473
jne 0x412ca0
mov eax, dword [0x4ae1e0]
mov edi, 0x729eae93
mov ebx, 0xae5b70ce
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0xae5b70ce
jmp 0x412c81
cmp eax, 0x2cbc453c
jle 0x412f52
cmp eax, 0x43d93672
jle 0x413069
cmp eax, 0x48e8ffdd
jg 0x413211
cmp eax, 0x43d93673
je 0x4134e3
cmp eax, 0x4526e8ab
jne 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0x2cbc453d
lea eax, [edx + 1]
imul eax, edx
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
sete dl
cmp ecx, 0xa
setl dh
xor dh, dl
mov edx, 0xc0d69ad2
jmp 0x413723
cmp eax, 0x5a878c2
jle 0x41309d
cmp eax, 0xa58e6ae
jg 0x41325a
cmp eax, 0x5a878c3
je 0x413509
cmp eax, 0x9ada683
jne 0x412ca0
mov eax, dword [ebp - 0x14]
mov eax, 0xa84dd820
jmp 0x412ca0
cmp eax, 0x74f8a244
jle 0x4130d4
cmp eax, 0x77e3afc3
jg 0x413296
cmp eax, 0x74f8a245
je 0x413513
cmp eax, 0x75e9f8ea
jne 0x412ca0
mov eax, dword [ebp - 0x34]
movzx eax, byte [eax]
mov byte [ebp - 0x1c], al
mov eax, 0x29521f71
jmp 0x412ca0
cmp eax, 0x8fcb9275
jle 0x4130ff
cmp eax, 0x98e82290
jle 0x4132b6
cmp eax, 0x98e82291
je 0x41355f
cmp eax, 0x9919bf8d
jne 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0x48e8ffde
lea eax, [edx + 1]
imul eax, edx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete bl
cmp ecx, 0xa
setl bh
xor bh, bl
mov ebx, 0x6dee4435
jmp 0x41363f
cmp eax, 0x1cd213d1
jg 0x41312d
cmp eax, 0x15a315d6
jg 0x41333e
cmp eax, 0x1315ce35
je 0x413582
cmp eax, 0x13d831b7
jne 0x412ca0
mov eax, 0xaa4fc17f
jmp 0x412ca0
cmp eax, 0xc0d69ad1
jle 0x413353
cmp eax, 0xc0d69ad2
je 0x41358c
cmp eax, 0xd750958f
jne 0x412ca0
mov eax, dword [ebp - 0x18]
mov dword [eax], str.ios_base::badbit_set
mov eax, 0x65628b92
jmp 0x412ca0
cmp eax, 0x4cbf7d42
jle 0x413381
cmp eax, 0x4cbf7d43
je 0x41359f
cmp eax, 0x4ec8b326
jne 0x412ca0
mov eax, dword [ebp - 0x48]
mov ecx, 0xb9d8219c
not eax
or eax, 0xfffffffb
cmp eax, 0xffffffff
mov eax, 0x1edacd4d
cmove eax, ecx
jmp 0x412ca0
cmp eax, 0xa3510d9b
je 0x4135d3
cmp eax, 0xa6c462fe
je 0x4135e9
cmp eax, 0xa84dd820
jne 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0x9ada683
lea eax, [edx + 1]
imul eax, edx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete bl
cmp ecx, 0xa
setl bh
xor bh, bl
mov ebx, 0xa58e6af
cmovne edi, ebx
test edx, eax
mov eax, edi
cmove eax, ebx
cmp ecx, 0xa
mov ecx, dword [ebp - 0x14]
cmovge eax, edi
mov ecx, dword [ecx]
and ecx, 2
mov dword [ebp - 0x40], ecx
jmp 0x412ca0
cmp eax, 0x2cbc453d
je 0x413608
cmp eax, 0x35a0b599
je 0x41364e
cmp eax, 0x39648cf4
jne 0x412ca0
mov eax, dword [ebp - 0x18]
mov dword [eax], str.ios_base::failbit_set
mov eax, 0x13d831b7
jmp 0x412ca0
cmp eax, 0xf6593271
je 0x412c60
cmp eax, 0xf88741f2
je 0x413658
cmp eax, 0xfdbc1638
jne 0x412ca0
cmp byte [ebp - 0x1e], 0
mov eax, 0x4526e8ab
mov ecx, 0x39648cf4
cmovne eax, ecx
jmp 0x412ca0
cmp eax, 0x657e44b0
je 0x413665
cmp eax, 0x6dee4435
je 0x41366f
cmp eax, 0x729eae93
jne 0x412ca0
mov eax, 0xaa4fc17f
jmp 0x412ca0
cmp eax, 0x8359944e
je 0x4136b6
cmp eax, 0x87b380a3
je 0x4136c0
cmp eax, 0x8b325a84
jne 0x412ca0
mov eax, dword [ebp - 0x14]
mov eax, 0x91816193
jmp 0x412ca0
cmp eax, 0x1cd213d2
je 0x4136ca
cmp eax, 0x1edacd4d
je 0x4136f4
cmp eax, 0x29521f71
jne 0x412ca0
movzx eax, byte [ebp - 0x1c]
not al
or al, 0xfe
cmp al, 0xff
mov eax, 0xa6c462fe
setne byte [ebp - 0x1d]
jmp 0x412ca0
cmp eax, 0xe6c38312
je 0x413739
cmp eax, 0xeab363b9
jne 0x412ca0
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x3c]
mov dword [eax + 0xc], ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + 0x10]
mov eax, dword [eax]
mov edx, dword [ebp - 0x14]
xor eax, ecx
andn eax, eax, ecx
mov dword [edx], eax
mov eax, dword [ebp - 0x14]
mov eax, 0x74f8a245
jmp 0x412ca0
cmp eax, 0x62527913
je 0x413743
cmp eax, 0x65628b92
jne 0x412ca0
mov eax, dword [ebp - 0x18]
mov esi, 0x87b380a3
mov edi, 0xd750958f
mov dword [eax], str.ios_base::badbit_set
mov eax, dword [0x4ae1e0]
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0xd750958f
jmp 0x413699
cmp eax, 0xac64d703
je 0x41374d
cmp eax, 0xae5b70ce
jne 0x412ca0
mov eax, 0xaa748473
jmp 0x412ca0
cmp eax, 0x48e8ffde
je 0x413777
cmp eax, 0x49e878b7
jne 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0x1315ce35
lea eax, [edx + 1]
imul eax, edx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete bl
cmp ecx, 0xa
setl bh
xor bh, bl
mov ebx, 0x115ebbcf
jmp 0x41363f
cmp eax, 0xa58e6af
je 0x413784
cmp eax, 0x115ebbcf
jne 0x412ca0
mov eax, dword [0x4ae1e0]
mov edi, 0x43af1924
mov ebx, 0x1315ce35
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0x1315ce35
jmp 0x412c81
cmp eax, 0x77e3afc4
je 0x41378e
cmp eax, 0x7c1a9672
jne 0x412ca0
mov eax, 0xdcb30538
jmp 0x412ca0
cmp eax, 0x8fcb9276
jne 0x4137eb
push eax
mov eax, esp
mov dword [ebp - 0x34], eax
push eax
mov eax, esp
mov dword [ebp - 0x24], eax
push eax
mov eax, esp
mov dword [ebp - 0x14], eax
push eax
mov eax, esp
mov dword [ebp - 0x18], eax
sub esp, 0x14
mov eax, esp
mov dword [ebp - 0x38], eax
sub esp, 8
mov eax, esp
mov dword [ebp - 0x2c], eax
movzx ecx, byte [ebp + 0xc]
mov edi, 0x62527913
mov ebx, 0x8359944e
mov eax, dword [ebp - 0x34]
mov byte [eax], cl
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x24]
mov dword [eax], ecx
mov eax, dword [0x4ae1e0]
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0x8359944e
sete cl
cmove eax, edi
cmp dword [0x4ae1dc], 0xa
setl dl
cmovge eax, ebx
xor dl, cl
mov edx, dword [ebp - 0x44]
cmovne eax, edi
mov dword [ebp - 0x28], edx
jmp 0x412ca0
cmp eax, 0x1662dd69
jne 0x4137f7
mov eax, 0x43d93673
jmp 0x412ca0
cmp eax, 0xb9d8219c
jne 0x413804
mov eax, dword [0x4ae1e0]
mov ebx, 0xa84dd820
mov edi, 0x9ada683
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0x9ada683
jmp 0x4133ad
cmp eax, 0x4a294b21
jne 0x413811
mov eax, dword [0x4ae1e0]
mov ebx, 0xa3510d9b
mov edi, 0x5a878c3
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0x5a878c3
sete cl
cmove eax, ebx
cmp dword [0x4ae1dc], 0xa
setl dl
cmovge eax, edi
xor dl, cl
cmovne eax, ebx
jmp 0x412ca0
cmp byte [ebp - 0x1b], 0
mov eax, 0x8b325a84
mov ecx, 0x75e9f8ea
cmovne eax, ecx
jmp 0x412ca0
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x2c]
mov eax, 0x144580bc
nop dword [eax + eax]
cmp eax, 0xcba4e274
jle 0x413450
cmp eax, 0x7ba90183
je 0x4137d1
cmp eax, 0x144580bc
je 0x4134b1
cmp eax, 0xcba4e275
jne 0x4133f0
mov eax, dword [0x4ae1d8]
mov esi, 0xaaa00c5c
mov ebx, 0x95e85501
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0x95e85501
sete cl
cmove eax, esi
cmp dword [0x4ae1d4], 0xa
setl dl
cmovge eax, ebx
xor dl, cl
cmovne eax, esi
jmp 0x4133f0
cmp eax, 0x95e85501
je 0x4134bb
cmp eax, 0xaaa00c5c
jne 0x4133f0
call fcn.004142d0
mov dword [ebp - 0x30], eax
mov ecx, edi
push dword [ebp - 0x30]
push 1
call fcn.004140d0
mov eax, dword [0x4ae1d8]
mov ebx, 0x7ba90183
mov esi, 0x95e85501
lea ecx, [eax + 1]
imul ecx, eax
mov eax, 0x95e85501
not ecx
or ecx, 0xfffffffe
cmp ecx, 0xffffffff
sete cl
cmove eax, ebx
cmp dword [0x4ae1d4], 0xa
setl dl
cmovge eax, esi
xor dl, cl
cmovne eax, ebx
jmp 0x4133f0
mov eax, 0xcba4e275
jmp 0x4133f0
call fcn.004142d0
mov dword [ebp - 0x30], eax
mov ecx, edi
push dword [ebp - 0x30]
push 1
call fcn.004140d0
mov eax, 0xaaa00c5c
jmp 0x4133f0
mov eax, 0x560884de
jmp 0x412ca0
mov eax, dword [0x4ae1e0]
mov edi, 0x35a0b599
mov ebx, 0x1662dd69
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
mov eax, 0x1662dd69
jmp 0x412c81
mov eax, 0x4a294b21
jmp 0x412ca0
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x3c]
mov esi, 0xd9c66c98
mov edi, 0xeab363b9
mov dword [eax + 0xc], ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + 0x10]
mov eax, dword [eax]
xor eax, ecx
andn eax, eax, ecx
mov ecx, dword [ebp - 0x14]
mov dword [ecx], eax
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
mov eax, dword [0x4ae1e0]
lea ecx, [eax - 1]
setne byte [ebp - 0x1b]
imul ecx, eax
mov eax, 0xeab363b9
jmp 0x413691
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov ecx, eax
xor ecx, 0xffffffe8
and ecx, eax
mov eax, dword [ebp - 0x24]
mov dword [eax], ecx
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov dword [ebp - 0x3c], eax
mov eax, 0xf6593271
jmp 0x412ca0
mov eax, 0x115ebbcf
jmp 0x412ca0
mov eax, dword [ebp - 0x18]
mov dword [eax], str.ios_base::eofbit_set
mov eax, 0x2cbc453d
jmp 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0xbac40e44
lea eax, [edx - 1]
imul eax, edx
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
sete dl
cmp ecx, 0xa
setl dh
xor dh, dl
mov edx, 0x4a4cb647
jmp 0x413723
cmp byte [ebp - 0x1d], 0
mov eax, 0x1cd213d2
mov ecx, 0x4cbf7d43
cmovne eax, ecx
jmp 0x412ca0
mov eax, dword [0x4ae1e0]
mov edi, 0x4a294b21
mov ebx, 0x5a878c3
lea ecx, [eax - 1]
imul ecx, eax
mov eax, 0x5a878c3
jmp 0x4136e7
mov eax, dword [ebp - 0x18]
mov edi, 0xc0d69ad2
mov dword [eax], str.ios_base::eofbit_set
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
lea eax, [edx + 1]
imul eax, edx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete bl
cmp ecx, 0xa
setl bh
xor bh, bl
mov ebx, 0x7c1a9672
cmovne edi, ebx
test edx, eax
mov eax, edi
cmove eax, ebx
jmp 0x4137c6
mov eax, 0x560884de
jmp 0x412ca0
mov eax, dword [ebp - 0x14]
mov eax, 0x5f715738
jmp 0x412ca0
mov eax, 0x49e878b7
jmp 0x412ca0
cmp dword [ebp - 0x40], 0
mov eax, dword [0x4ae1e0]
mov esi, 0xfdbc1638
mov edi, 0x48e8ffde
lea ecx, [eax - 1]
setne byte [ebp - 0x1e]
imul ecx, eax
mov eax, 0x48e8ffde
not ecx
or ecx, 0xfffffffe
cmp ecx, 0xffffffff
sete cl
cmove eax, esi
cmp dword [0x4ae1dc], 0xa
setl dl
cmovge eax, edi
xor dl, cl
cmovne eax, esi
jmp 0x412ca0
mov eax, 0x8fcb9276
jmp 0x412ca0
mov eax, 0x77e3afc4
jmp 0x412ca0
mov eax, dword [ebp - 0x18]
mov eax, dword [0x4ae1e0]
mov edi, 0x5f715738
mov ebx, 0xf88741f2
lea ecx, [eax + 1]
imul ecx, eax
mov eax, 0xf88741f2
not ecx
or ecx, 0xfffffffe
cmp ecx, 0xffffffff
jmp 0x412c81
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0x65628b92
lea eax, [edx + 1]
imul eax, edx
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
sete dl
cmp ecx, 0xa
setl dh
xor dh, dl
mov edx, 0xd750958f
cmovne edx, edi
cmp eax, 0xffffffff
mov eax, edx
cmove eax, edi
cmp ecx, 0xa
cmovge eax, edx
jmp 0x412ca0
mov eax, 0x4ec8b326
jmp 0x412ca0
mov eax, 0x98e82291
jmp 0x412ca0
movzx ecx, byte [ebp - 0x19]
movzx eax, byte [ebp - 0x1a]
mov edi, 0x8fcb9276
mov edx, ecx
xor dl, al
mov edx, 0x8359944e
cmovne edx, edi
test al, al
mov eax, edx
cmovne eax, edi
test cl, cl
cmove eax, edx
jmp 0x412ca0
mov eax, dword [ebp - 0x40]
mov eax, 0x6dee4435
jmp 0x412ca0
mov eax, 0x9919bf8d
jmp 0x412ca0
mov edx, dword [0x4ae1e0]
mov ecx, dword [0x4ae1dc]
mov edi, 0x1662dd69
mov esi, 0x43d93673
lea eax, [edx + 1]
imul eax, edx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete bl
cmp ecx, 0xa
setl bh
xor bh, bl
cmovne edi, esi
test edx, eax
mov eax, edi
cmove eax, esi
cmp ecx, 0xa
cmovge eax, edi
jmp 0x412ca0
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x38]
push dword [ebp - 0x2c]
push dword [eax]
call fcn.00413850
mov eax, 0x15a315d7
jmp 0x412ca0
cmp eax, 0x91816193
je 0x413825
jmp 0x412ca0
cmp eax, 0x15a315d7
jne 0x412ca0
jmp 0x413839
cmp eax, 0xbac40e44
jne 0x412ca0
jmp 0x41381c
cmp eax, 0x4a4cb647
jne 0x412ca0
push 0
push 0
call fcn.0043d924
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0043a530
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
push 0x4aa158
push dword [ebp - 0x38]
call fcn.0043d924
int3