Function at 0x7e4830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [0xbd33e0]
mov edi, ecx
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
xor ebx, ebx
xor eax, esp
test edx, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], esi
mov dword [esp + 4], edx
je 0x7e4a93
mov eax, fcn.007abbd0
mov esi, 3
sub esi, eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, esi
xor eax, fcn.007abbd0
movzx ecx, byte [0xbba337]
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x7e4a38
mov al, byte [0xbba337]
mov ecx, esi
mov ah, 1
xor ecx, fcn.007abbd0
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba337], ah
jne 0x7e489c
mov ecx, esi
movzx eax, al
xor ecx, fcn.007abbd0
sete cl
or cl, 6
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7e48f9
mov eax, esi
movzx ecx, byte [0xbba337]
xor eax, fcn.007abbd0
sete al
or al, 6
movzx eax, al
bt ecx, eax
jae 0x7e48d9
jmp 0x7e4a38
mov eax, esi
movzx ecx, byte [0xbba337]
xor eax, fcn.007abbd0
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x7e4a1e
mov eax, esi
xor ecx, ecx
mov dword [esp], edi
xor eax, fcn.007abbd0
sete cl
mov eax, ecx
or cl, 6
or eax, 0xff8f6aa6
xor eax, dword [0xbba310]
mov dword [0xbba310], eax
not eax
mov ebp, dword [0xbba314]
imul eax, eax, 0xff8f6aa7
lea edi, [eax + eax]
xor ebp, eax
shr eax, 0x1e
mov dword [0xbba314], ebp
or eax, edi
not ebp
imul ebp, eax
mov eax, dword [0xbba318]
lea edi, [ebp*4]
xor eax, ebp
shr ebp, 0x1d
mov dword [0xbba318], eax
or ebp, edi
not eax
mov edi, dword [0xbba31c]
imul eax, ebp
lea ebp, [eax*8]
xor edi, eax
shr eax, 0x1c
mov dword [0xbba31c], edi
or eax, ebp
not edi
imul edi, eax
mov eax, dword [0xbba320]
mov ebp, edi
shl ebp, 4
xor eax, edi
shr edi, 0x1b
mov dword [0xbba320], eax
or edi, ebp
not eax
imul eax, edi
mov edi, dword [0xbba324]
mov ebp, eax
shl ebp, 5
xor edi, eax
shr eax, 0x1a
mov dword [0xbba324], edi
or eax, ebp
not edi
imul edi, eax
mov eax, dword [0xbba328]
mov ebp, edi
shl ebp, 6
xor eax, edi
shr edi, 0x19
mov dword [0xbba328], eax
or edi, ebp
not eax
imul eax, edi
mov edi, dword [0xbba32c]
mov ebp, eax
shl ebp, 7
xor edi, eax
shr eax, 0x18
mov dword [0xbba32c], edi
or eax, ebp
not edi
imul edi, eax
mov ah, 1
xor dword [0xbba330], edi
mov edi, dword [esp]
shl ah, cl
or byte [0xbba337], ah
mov eax, esi
xor eax, fcn.007abbd0
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbba337], al
mov eax, dword [edx + 4]
cmp eax, 4
je 0x7e50c2
cmp eax, 5
je 0x7e50e2
cmp eax, 7
jne 0x7e5172
push 7
push 0xbba310
push dword [edx]
call fcn.00783750
add esp, 0xc
xor ecx, ecx
test eax, eax
jne 0x7e5172
movzx eax, byte [ecx + ecx*2 + 0xb50692]
mov ecx, dword [esp + 8]
or ebx, eax
lea eax, [ecx + 1]
cmp eax, 2
ja 0x7e4a93
mov edx, dword [esp + ecx*4 + 0x10]
test edx, edx
jne 0x7e4874
mov eax, ebx
and eax, 0x21
cmp eax, 0x21
je 0x7e4aa8
mov eax, ebx
and eax, 0x40
je 0x7e4e14
mov edx, fcn.007d3f40
movzx ecx, byte [0xbba33f]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7e4ba0
mov al, byte [0xbba33f]
cmp edx, 3
mov ah, 1
sete cl
not cl
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba33f], ah
jne 0x7e4ad5
mov ecx, fcn.007d3f40
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
not dl
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7e4b32
cmp ecx, 3
movzx edx, byte [0xbba33f]
sete al
not al
and al, 7
movzx eax, al
bt edx, eax
jae 0x7e4b17
jmp 0x7e4ba0
cmp ecx, 3
movzx ecx, byte [0xbba33f]
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7e4b7d
mov eax, fcn.007d3f40
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 1
sete cl
xor ecx, 0x3af5835f
add ecx, 0x900
xor dword [0xbba338], ecx
and cl, 7
shl al, cl
or byte [0xbba33f], al
mov eax, fcn.007d3f40
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
not cl
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbba33f], al
mov edx, fcn.00780e70
mov eax, fcn.00780e70
movzx ecx, byte [0xbba373]
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7e4de2
mov al, byte [0xbba373]
cmp edx, 0xffffffff
mov ah, 1
sete cl
not cl
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba373], ah
jne 0x7e4bd1
mov ecx, fcn.00780e70
mov edx, fcn.00780e70
movzx eax, al
and ecx, 1
xor ecx, edx
cmp ecx, 0xffffffff
sete dl
not dl
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7e4c35
cmp ecx, 0xffffffff
movzx edx, byte [0xbba373]
sete al
not al
and al, 7
movzx eax, al
bt edx, eax
jae 0x7e4c17
jmp 0x7e4de2
cmp ecx, 0xffffffff
movzx ecx, byte [0xbba373]
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7e4dbb
mov edx, fcn.00780e70
mov eax, dword [0xbba340]
mov ecx, fcn.00780e70
and edx, 1
xor edx, ecx
xor ecx, ecx
cmp edx, 0xffffffff
sete cl
mov edx, eax
xor edx, ecx
xor ecx, 0x78cabbbf
xor eax, ecx
xor edx, 0x87354440
mov dword [0xbba340], eax
imul edx, ecx
and cl, 7
mov eax, dword [0xbba344]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbba344], eax
or esi, edx
not eax
mov edx, dword [0xbba348]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbba348], edx
or esi, eax
not edx
mov eax, dword [0xbba34c]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbba34c], eax
or esi, edx
not eax
mov edx, dword [0xbba350]
imul eax, esi
mov esi, eax
shl esi, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbba350], edx
or eax, esi
not edx
mov ebx, dword [0xbba354]
imul edx, eax
mov esi, edx
shl esi, 5
xor ebx, edx
shr edx, 0x1a
mov dword [0xbba354], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbba358]
mov esi, ebx
shl esi, 6
xor edx, ebx
shr ebx, 0x19
mov dword [0xbba358], edx
or ebx, esi
not edx
mov ebp, dword [0xbba35c]
imul edx, ebx
mov esi, edx
shl esi, 7
xor ebp, edx
shr edx, 0x18
mov dword [0xbba35c], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbba360]
mov esi, ebp
shl esi, 8
xor edx, ebp
shr ebp, 0x17
mov dword [0xbba360], edx
or ebp, esi
not edx
mov ebx, dword [0xbba364]
imul edx, ebp
mov esi, edx
shl esi, 9
xor ebx, edx
shr edx, 0x16
mov dword [0xbba364], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbba368]
mov esi, ebx
shl esi, 0xa
xor edx, ebx
shr ebx, 0x15
mov dword [0xbba368], edx
or ebx, esi
not edx
imul edx, ebx
xor dword [0xbba36c], edx
mov dl, 1
shl dl, cl
or byte [0xbba373], dl
mov ecx, fcn.00780e70
mov eax, fcn.00780e70
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
not cl
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbba373], al
mov eax, dword [esp + 0x34]
mov esi, 0xbba338
mov ecx, 0xbba339
mov edx, eax
test eax, eax
cmovne ecx, esi
push edx
push ecx
push dword [esp + 0x38]
push dword [esp + 0x10]
push 0xbba340
push edi
call fcn.0078de60
add esp, 0x18
jmp 0x7e50a8
test bl, 0x20
je 0x7e50ad
mov eax, ebx
and eax, 0x18
cmp eax, 8
je 0x7e50ad
mov edx, fcn.00840690
movzx ecx, byte [0xbba3bb]
and edx, 1
inc edx
mov eax, edx
xor eax, fcn.00840690
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7e509a
mov al, byte [0xbba3bb]
mov ecx, edx
mov ah, 1
xor ecx, fcn.00840690
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba3bb], ah
jne 0x7e4e58
mov ecx, fcn.00840690
movzx eax, al
and ecx, 1
inc ecx
mov edx, ecx
xor edx, fcn.00840690
sete dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7e4ebe
mov eax, ecx
movzx edx, byte [0xbba3bb]
xor eax, fcn.00840690
sete al
or al, 4
movzx eax, al
bt edx, eax
jae 0x7e4e9e
jmp 0x7e509a
xor ecx, fcn.00840690
movzx ecx, byte [0xbba3bb]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7e5079
mov eax, fcn.00840690
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.00840690
mov eax, dword [0xbba380]
sete cl
or ecx, 0x39a91d4c
add ecx, 0x400
xor eax, ecx
mov dword [0xbba380], eax
not eax
mov edx, dword [0xbba384]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbba384], edx
or esi, eax
not edx
mov eax, dword [0xbba388]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbba388], eax
or esi, edx
not eax
mov edx, dword [0xbba38c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbba38c], edx
or esi, eax
not edx
mov eax, dword [0xbba390]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbba390], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbba394]
mov esi, eax
shl esi, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbba394], edx
or eax, esi
not edx
mov ebp, dword [0xbba398]
imul edx, eax
mov esi, edx
shl esi, 6
xor ebp, edx
shr edx, 0x19
mov dword [0xbba398], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbba39c]
mov esi, ebp
shl esi, 7
xor edx, ebp
shr ebp, 0x18
mov dword [0xbba39c], edx
or ebp, esi
not edx
mov ebx, dword [0xbba3a0]
imul edx, ebp
mov esi, edx
shl esi, 8
xor ebx, edx
shr edx, 0x17
mov dword [0xbba3a0], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbba3a4]
mov esi, ebx
shl esi, 9
xor edx, ebx
shr ebx, 0x16
mov dword [0xbba3a4], edx
or ebx, esi
not edx
mov ebp, dword [0xbba3a8]
imul edx, ebx
mov esi, edx
shl esi, 0xa
xor ebp, edx
shr edx, 0x15
mov dword [0xbba3a8], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbba3ac]
mov esi, ebp
shl esi, 0xb
xor edx, ebp
shr ebp, 0x14
mov dword [0xbba3ac], edx
or ebp, esi
not edx
mov ebx, dword [0xbba3b0]
imul edx, ebp
mov esi, edx
shl esi, 0xc
xor ebx, edx
shr edx, 0x13
mov dword [0xbba3b0], ebx
or edx, esi
not ebx
imul ebx, edx
mov dl, 1
xor dword [0xbba3b4], ebx
shl dl, cl
or byte [0xbba3bb], dl
mov eax, fcn.00840690
and eax, 1
inc eax
xor eax, fcn.00840690
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbba3bb], al
push 0xbba380
push edi
call fcn.0078de60
add esp, 8
mov ebx, 1
mov ecx, dword [esp + 0x18]
xor ecx, esp
call fcn.00989fe9
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, dword [edx]
push 4
push 0xbba316
push ebp
call fcn.00783750
add esp, 0xc
test eax, eax
jne 0x7e5120
mov ecx, 1
jmp 0x7e4a71
mov ebp, dword [edx]
push 5
push 0xbba31a
push ebp
call fcn.00783750
add esp, 0xc
test eax, eax
jne 0x7e5102
mov ecx, 2
jmp 0x7e4a71
push 5
push 0xbba31e
push ebp
call fcn.00783750
add esp, 0xc
test eax, eax
jne 0x7e513a
mov ecx, 3
jmp 0x7e4a71
push 4
push 0xbba323
push ebp
call fcn.00783750
add esp, 0xc
mov ecx, 4
jmp 0x7e4a69
push 5
push 0xbba327
push ebp
call fcn.00783750
add esp, 0xc
test eax, eax
jne 0x7e5158
mov ecx, 5
jmp 0x7e4a71
push 5
push 0xbba32c
push ebp
call fcn.00783750
add esp, 0xc
mov ecx, 6
jmp 0x7e4a69
or ebx, 0x40
jmp 0x7e4a93