Function at 0x10012890
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x80
cmp dword [0x453c0364], 0
push ebx
push ebp
push esi
push edi
je 0x100128bb
push 0x452f89b8
push 0x3ea
call fcn.100285e0
add esp, 8
push 0
push 0
call fcn.10010520
push 5
call fcn.1000f420
push 0x680000
call fcn.1002bb10
mov esi, eax
add esp, 0x10
test esi, esi
mov dword [esp + 0x28], esi
jne 0x1001290b
mov eax, dword [0x45400de4]
push 0x452f89a4
push eax
push 0x452f84c8
push 0x3ea
call fcn.100285e0
push 1
push 0x453c0a80
call fcn.10027b90
add esp, 0x18
movzx ecx, word [0x45400ee6]
mov edi, 2
sub ecx, 5
cmp ecx, edi
mov dword [esp + 0x20], edi
jle 0x1001339a
jmp 0x10012930
movzx edx, word [0x453c09c0]
mov ebp, 2
sub edx, 5
cmp edx, ebp
mov dword [esp + 0x18], ebp
jle 0x1001337a
mov eax, edi
neg eax
mov dword [esp + 0x40], eax
lea eax, [edi + 0x200]
cmp edi, eax
mov dword [esp + 0x14], edi
jge 0x10012b3e
mov eax, ebp
neg eax
mov dword [esp + 0x2c], eax
lea ecx, [ecx]
movzx eax, word [0x45400ee6]
sub eax, 2
cmp edi, eax
jge 0x10012b3e
mov esi, dword [0x453c0ad0]
mov eax, edi
and eax, 7
mov ecx, ebp
and ecx, 1
add eax, eax
add ecx, eax
add ecx, ecx
mov edx, esi
shr edx, cl
and edx, 1
add edx, ebp
mov ecx, edx
and ecx, 1
add ecx, eax
add ecx, ecx
shr esi, cl
add ebp, 0x200
mov dword [esp + 0x1c], edx
mov dword [esp + 0x38], ebp
and esi, 3
cmp edx, ebp
jge 0x10012b1a
jmp 0x100129d0
movzx eax, word [0x453c09c0]
lea ecx, [eax - 2]
cmp edx, ecx
jge 0x10012b1a
mov ecx, dword [0x45400e88]
imul eax, edi
add eax, edx
mov di, word [ecx + eax*8 + 0xa]
mov bx, word [ecx + eax*8 - 6]
lea eax, [ecx + eax*8]
movzx ebp, di
movzx ecx, bx
add ecx, ebp
movzx ebp, word [eax + esi*2]
add ecx, ebp
movzx ebp, word [eax + esi*2 - 0x10]
add ecx, ecx
sub ecx, ebp
movzx ebp, word [eax + esi*2 + 0x10]
sub ecx, ebp
sar ecx, 2
cmp bx, di
mov ebp, ecx
jae 0x10012a31
movzx edi, di
cmp ecx, edi
jl 0x10012a2b
mov ebp, edi
movzx ebx, word [eax - 6]
jmp 0x10012a3f
movzx edi, word [eax - 6]
cmp ecx, edi
jl 0x10012a3b
mov ebp, edi
movzx ebx, word [eax + 0xa]
cmp ebx, ebp
jle 0x10012a47
mov ecx, ebx
jmp 0x10012a4d
cmp ecx, edi
jl 0x10012a4d
mov ecx, edi
mov edi, dword [esp + 0x2c]
add edx, edi
mov edi, dword [esp + 0x28]
lea edx, [edx + edx*2]
mov word [edi + edx*2 + 2], cx
movzx ecx, word [0x453c09c0]
lea edx, [edi + edx*2]
mov dword [esp + 0x3c], edx
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov bx, word [ecx + eax + 2]
mov edx, eax
sub edx, ecx
mov di, word [edx + 2]
add edx, 2
mov dword [esp + 0x34], edx
movzx ebp, di
movzx edx, bx
add edx, ebp
movzx ebp, word [eax + esi*2]
add edx, ebp
mov ebp, esi
sub ebp, ecx
movzx ebp, word [eax + ebp*2]
add edx, edx
sub edx, ebp
lea ebp, [ecx + esi]
movzx ebp, word [eax + ebp*2]
sub edx, ebp
sar edx, 2
cmp di, bx
jae 0x10012ad4
movzx eax, bx
cmp edx, eax
mov edi, edx
jl 0x10012abd
mov edi, eax
mov ecx, dword [esp + 0x34]
movzx ecx, word [ecx]
cmp ecx, edi
jle 0x10012acc
mov edx, ecx
jmp 0x10012af6
cmp edx, eax
jl 0x10012af6
mov edx, eax
jmp 0x10012af6
mov edi, dword [esp + 0x34]
movzx edi, word [edi]
cmp edx, edi
mov ebx, edx
jl 0x10012ae3
mov ebx, edi
movzx eax, word [ecx + eax + 2]
cmp eax, ebx
jle 0x10012af0
mov edx, eax
jmp 0x10012af6
cmp edx, edi
jl 0x10012af6
mov edx, edi
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x14]
mov word [eax + 0x180002], dx
mov edx, dword [esp + 0x1c]
add edx, 2
cmp edx, dword [esp + 0x38]
mov dword [esp + 0x1c], edx
jl 0x100129d0
mov eax, dword [esp + 0x20]
add dword [esp + 0x2c], 0x200
mov ebp, dword [esp + 0x18]
add edi, 1
add eax, 0x200
cmp edi, eax
mov dword [esp + 0x14], edi
jl 0x10012970
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], 2
mov edi, edi
mov ecx, dword [esp + 0x20]
lea eax, [ecx + 1]
add ecx, 0x1ff
cmp eax, ecx
mov dword [esp + 0x14], eax
jge 0x10012d97
lea edx, [eax*4 + 4]
mov dword [esp + 0x2c], edx
jmp 0x10012b80
mov eax, dword [esp + 0x14]
lea ebx, [ebx]
movzx ecx, word [0x45400ee6]
sub ecx, 3
cmp eax, ecx
jge 0x10012d97
lea ebx, [ebp + 1]
lea eax, [ebp + 0x1ff]
cmp ebx, eax
jge 0x10012d72
movzx eax, word [0x453c09c0]
lea edx, [eax - 3]
cmp ebx, edx
mov dword [esp + 0x30], eax
jge 0x10012d72
mov ecx, dword [esp + 0x14]
mov edx, dword [0x45400e88]
imul eax, ecx
add eax, ebx
lea edi, [edx + eax*8]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
add eax, ecx
shl eax, 9
sub eax, dword [esp + 0x18]
and ecx, 7
add eax, ebx
lea eax, [eax + eax*2]
add eax, eax
lea esi, [eax + edx]
lea edx, [eax + edx + 0x300000]
mov eax, ebx
and eax, 1
lea ebp, [eax + ecx*2]
mov dword [esp + 0x3c], edx
mov edx, dword [0x453c0ad0]
add ebp, ebp
mov ecx, ebp
shr edx, cl
mov ecx, 2
and edx, 3
sub ecx, edx
cmp ecx, 1
jne 0x10012cb9
mov ecx, dword [esp + 0x2c]
and ecx, 0x1c
lea ecx, [ecx + eax*2]
mov eax, dword [0x453c0ad0]
shr eax, cl
and eax, 3
mov ecx, eax
neg eax
mov dword [esp + 0x34], eax
lea edx, [ecx + ecx + 4]
mov eax, edi
sub eax, edx
movzx eax, word [eax]
mov edx, dword [esp + 0x34]
movzx edx, word [edi + edx*2 + 0xc]
add eax, edx
movzx edx, word [esi + 8]
sub eax, edx
movzx edx, word [esi - 4]
sub eax, edx
movzx edx, word [edi + 2]
sar eax, 1
add eax, edx
cmp eax, 0xffff
jge 0x10012c76
xor edx, edx
test eax, eax
setl dl
sub edx, 1
and eax, edx
jmp 0x10012c7b
mov eax, 0xffff
mov edx, dword [esp + 0x34]
mov word [esi + edx*2 + 4], ax
movzx edx, word [0x453c09c0]
add edx, edx
add edx, edx
mov eax, ecx
sub eax, edx
movzx eax, word [edi + eax*2]
add edx, ecx
movzx edx, word [edi + edx*2]
add eax, edx
movzx edx, word [esi + 0xc02]
sub eax, edx
movzx edx, word [esi - 0xbfe]
sub eax, edx
movzx edx, word [edi + 2]
sar eax, 1
jmp 0x10012d1c
mov eax, dword [esp + 0x30]
add eax, eax
add eax, eax
mov edx, ecx
sub edx, eax
mov dword [esp + 0x34], edx
lea edx, [eax + ecx]
movzx eax, word [edi + edx*2 - 8]
movzx edx, word [edi + edx*2 + 8]
add eax, edx
mov edx, dword [esp + 0x34]
movzx edx, word [edi + edx*2 - 8]
add eax, edx
mov edx, dword [esp + 0x34]
movzx edx, word [edi + edx*2 + 8]
add eax, edx
movzx edx, word [esi + 0xc08]
sub eax, edx
movzx edx, word [esi - 0xc04]
sub eax, edx
movzx edx, word [esi + 0xbfc]
sub eax, edx
movzx edx, word [esi - 0xbf8]
sub eax, edx
movzx edx, word [esi + 2]
add eax, 1
sar eax, 2
add eax, edx
cmp eax, 0xffff
jge 0x10012d33
xor edx, edx
test eax, eax
setl dl
sub edx, 1
and eax, edx
jmp 0x10012d38
mov eax, 0xffff
mov edx, dword [esp + 0x3c]
mov word [esi + ecx*2], ax
mov eax, dword [0x453c0ad0]
mov ecx, ebp
shr eax, cl
push edx
push esi
and eax, 3
mov cx, word [edi + eax*2]
mov word [esi + eax*2], cx
call fcn.10010520
mov eax, dword [esp + 0x20]
add ebx, 1
add eax, 0x1ff
add esp, 8
cmp ebx, eax
jl 0x10012ba3
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
add dword [esp + 0x2c], 4
mov ebp, dword [esp + 0x18]
add ecx, 1
add eax, 0x1ff
cmp ecx, eax
mov dword [esp + 0x14], ecx
jl 0x10012b76
add dword [esp + 0x24], 0x200
sub dword [esp + 0x1c], 1
jne 0x10012b50
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
xor eax, eax
add edi, 0x600000
mov ecx, 0x20000
rep stosd dword es:[edi], eax
lea eax, [esi + 2]
mov edx, eax
lea eax, [esi + 0x1fe]
cmp edx, eax
mov dword [esp + 0x14], edx
jge 0x100130e1
mov ecx, edx
sub ecx, esi
shl ecx, 9
mov dword [esp + 0x24], ecx
movzx eax, word [0x45400ee6]
sub eax, 4
cmp edx, eax
jge 0x100130e1
lea eax, [ebp + 2]
lea edx, [ebp + 0x1fe]
cmp eax, edx
mov dword [esp + 0x1c], eax
jge 0x100130b7
mov edx, eax
sub edx, dword [esp + 0x18]
mov dword [esp + 0x30], edx
movzx esi, word [0x453c09c0]
sub esi, 4
cmp eax, esi
jge 0x100130b7
lea eax, [ecx + edx]
mov edx, dword [esp + 0x28]
lea ecx, [eax + eax*2 + 3]
mov dword [esp + 0x3c], eax
lea eax, [edx + ecx*2 + 0x300000]
xor edx, edx
mov edi, edi
movsx ecx, word [eax - 6]
movsx edi, word [eax - 0xc]
movsx ebp, word [eax - 0xa]
mov esi, ecx
sub esi, edi
mov edi, esi
sar edi, 0x1f
mov ebx, edi
xor ebx, esi
sub ebx, edi
movsx esi, word [eax - 2]
mov dword [esp + edx + 0x50], ebx
movsx ebx, word [eax - 8]
mov edi, esi
sub edi, ebx
movsx ebx, word [eax - 4]
mov dword [esp + 0x2c], ebx
sub ebx, ebp
mov ebp, ebx
imul ebp, ebx
mov ebx, edi
imul ebx, edi
movsx edi, word [eax]
add ebp, ebx
mov dword [esp + edx + 0x70], ebp
mov ebx, ecx
sub ebx, edi
movsx edi, word [eax]
sar ebx, 0x1f
mov ebp, ecx
sub ebp, edi
movsx edi, word [eax]
xor ebx, ebp
mov ebp, ecx
sub ebp, edi
mov edi, dword [esp + 0x2c]
sar ebp, 0x1f
sub ebx, ebp
mov dword [esp + edx + 0x54], ebx
movsx ebx, word [eax + 2]
mov ebp, edi
sub ebp, ebx
movsx ebx, word [eax + 2]
sub edi, ebx
imul ebp, edi
movsx edi, word [eax + 4]
mov ebx, esi
sub ebx, edi
movsx edi, word [eax + 4]
mov dword [esp + 0x34], esi
sub esi, edi
imul ebx, esi
movsx esi, word [eax - 0xc06]
add ebp, ebx
mov edi, ecx
sub edi, esi
movsx esi, word [eax - 0xc06]
sar edi, 0x1f
mov ebx, ecx
sub ebx, esi
movsx esi, word [eax - 0xc06]
xor edi, ebx
mov ebx, ecx
sub ebx, esi
mov esi, dword [esp + 0x2c]
sar ebx, 0x1f
sub edi, ebx
mov dword [esp + edx + 0x58], edi
movsx edi, word [eax - 0xc04]
mov ebx, esi
sub ebx, edi
movsx edi, word [eax - 0xc04]
sub esi, edi
movsx edi, word [eax - 0xc02]
imul ebx, esi
mov esi, dword [esp + 0x34]
mov dword [esp + edx + 0x74], ebp
mov ebp, esi
sub ebp, edi
movsx edi, word [eax - 0xc02]
sub esi, edi
imul ebp, esi
movsx esi, word [eax + 0xbfa]
mov edi, ecx
sub edi, esi
movsx esi, word [eax + 0xbfa]
add ebx, ebp
mov dword [esp + edx + 0x78], ebx
mov ebx, ecx
sub ebx, esi
movsx esi, word [eax + 0xbfa]
sub ecx, esi
movsx esi, word [eax + 0xbfc]
sar edi, 0x1f
xor edi, ebx
sar ecx, 0x1f
sub edi, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + edx + 0x5c], edi
mov edi, ecx
sub edi, esi
movsx esi, word [eax + 0xbfc]
sub ecx, esi
movsx esi, word [eax + 0xbfe]
imul edi, ecx
mov ecx, dword [esp + 0x34]
mov ebx, ecx
sub ebx, esi
movsx esi, word [eax + 0xbfe]
sub ecx, esi
imul ebx, ecx
add edi, ebx
mov dword [esp + edx + 0x7c], edi
add edx, 0x10
add eax, 0x180000
cmp edx, 0x20
jl 0x10012e40
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
cmp edi, ebx
mov esi, edi
ja 0x10012fcd
mov esi, ebx
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
cmp ecx, edx
mov eax, ecx
ja 0x10012fdd
mov eax, edx
cmp esi, eax
jae 0x10012fed
cmp edi, ebx
jbe 0x10012fe9
mov ebp, edi
jmp 0x10012ff5
mov ebp, ebx
jmp 0x10012ff5
cmp ecx, edx
mov ebp, ecx
ja 0x10012ff5
mov ebp, edx
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x74]
cmp edi, ebx
mov esi, edi
ja 0x10013005
mov esi, ebx
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x8c]
cmp ecx, edx
mov eax, ecx
ja 0x1001301b
mov eax, edx
cmp esi, eax
jae 0x1001302b
cmp edi, ebx
jbe 0x10013027
mov edx, edi
jmp 0x10013031
mov edx, ebx
jmp 0x10013031
cmp ecx, edx
jbe 0x10013031
mov edx, ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
add eax, 0x600000
add eax, ecx
xor ecx, ecx
cmp dword [esp + ecx + 0x50], ebp
ja 0x10013051
cmp dword [esp + ecx + 0x70], edx
ja 0x10013051
add byte [eax], 1
cmp dword [esp + ecx + 0x54], ebp
ja 0x10013060
cmp dword [esp + ecx + 0x74], edx
ja 0x10013060
add byte [eax], 1
cmp dword [esp + ecx + 0x58], ebp
ja 0x1001306f
cmp dword [esp + ecx + 0x78], edx
ja 0x1001306f
add byte [eax], 1
cmp dword [esp + ecx + 0x5c], ebp
ja 0x1001307e
cmp dword [esp + ecx + 0x7c], edx
ja 0x1001307e
add byte [eax], 1
add ecx, 0x10
add eax, 0x40000
cmp ecx, 0x20
jl 0x10013042
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
add eax, 1
add ecx, 0x1fe
add edx, 1
cmp eax, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], edx
jl 0x10012e14
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
add edx, 1
add ecx, 0x200
add eax, 0x1fe
cmp edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], ecx
jl 0x10012de3
mov edx, dword [esp + 0x20]
lea eax, [edx + 3]
lea ecx, [edx + 0x1fd]
cmp eax, ecx
mov dword [esp + 0x14], eax
jge 0x1001335a
sub eax, edx
mov dword [esp + 0x24], eax
shl eax, 9
mov dword [esp + 0x34], eax
jmp 0x10013110
movzx edx, word [0x45400ee6]
sub edx, 5
cmp dword [esp + 0x14], edx
jge 0x1001335a
lea eax, [ebp + 3]
add ebp, 0x1fd
cmp eax, ebp
mov dword [esp + 0x1c], eax
mov dword [esp + 0x44], ebp
jge 0x1001332d
sub eax, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
lea esp, [esp]
movzx esi, word [0x453c09c0]
lea eax, [esi - 5]
cmp dword [esp + 0x1c], eax
mov dword [esp + 0x30], esi
jge 0x1001332d
mov ebp, dword [esp + 0x24]
add ebp, 1
xor eax, eax
lea ecx, [esp + 0x48]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], ecx
lea ecx, [ecx]
mov ebx, dword [esp + 0x24]
add ebx, 0xffffffff
cmp ebx, ebp
mov dword [ecx], 0
jg 0x100131ec
mov edi, dword [esp + 0x2c]
add edi, 0xffffffff
jmp 0x100131a0
mov ebp, dword [esp + 0x2c]
add ebp, 1
cmp edi, ebp
jg 0x100131de
mov esi, dword [ecx]
add eax, ebx
shl eax, 9
add eax, edi
lea ecx, [edx + 0x600000]
add eax, ecx
mov ecx, ebp
sub ecx, edi
add ecx, 1
movsx ebp, byte [eax]
add esi, ebp
add eax, 1
sub ecx, 1
jne 0x100131c3
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov dword [ecx], esi
mov esi, dword [esp + 0x30]
mov ebp, dword [esp + 0x24]
add ebx, 1
add ebp, 1
cmp ebx, ebp
jle 0x100131a0
add eax, 0x200
add ecx, 4
cmp eax, 0x400
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], eax
jl 0x10013180
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
cmp eax, edi
mov ebp, dword [0x45400e88]
je 0x10013288
xor ecx, ecx
cmp edi, eax
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
setg cl
imul esi, edi
shl ecx, 9
add ecx, dword [esp + 0x24]
add esi, eax
shl ecx, 9
add ecx, dword [esp + 0x2c]
lea ecx, [ecx + ecx*2]
movzx ebx, word [edx + ecx*2]
mov word [ebp + esi*8], bx
movzx esi, word [0x453c09c0]
movzx ebx, word [edx + ecx*2 + 2]
imul esi, edi
mov ebp, dword [0x45400e88]
add esi, eax
mov word [ebp + esi*8 + 2], bx
movzx esi, word [0x453c09c0]
mov cx, word [edx + ecx*2 + 4]
imul esi, edi
mov edi, dword [0x45400e88]
add esi, eax
mov word [edi + esi*8 + 4], cx
jmp 0x10013317
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
add ecx, 0x200
shl ecx, 9
add eax, edi
lea eax, [eax + eax*2]
add ecx, edi
mov edi, dword [esp + 0x1c]
lea ecx, [ecx + ecx*2]
movzx ebx, word [edx + ecx*2]
movzx ecx, word [edx + eax*2]
add ebx, ecx
mov ecx, dword [esp + 0x14]
imul esi, ecx
add esi, edi
sar ebx, 1
mov word [ebp + esi*8], bx
movzx ebx, word [edx + eax*2 + 2]
movzx esi, word [edx + eax*2 + 0x180002]
mov ebp, dword [0x45400e88]
add esi, ebx
movzx ebx, word [0x453c09c0]
imul ebx, ecx
sar esi, 1
add ebx, edi
mov word [ebp + ebx*8 + 2], si
movzx esi, word [edx + eax*2 + 0x180004]
movzx eax, word [edx + eax*2 + 4]
add esi, eax
movzx eax, word [0x453c09c0]
imul eax, ecx
mov ecx, dword [0x45400e88]
sar esi, 1
add eax, edi
mov word [ecx + eax*8 + 4], si
mov eax, edi
add dword [esp + 0x2c], 1
add eax, 1
cmp eax, dword [esp + 0x44]
mov dword [esp + 0x1c], eax
jl 0x10013150
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
add dword [esp + 0x34], 0x200
add dword [esp + 0x24], 1
mov ebp, dword [esp + 0x18]
add ecx, 1
add eax, 0x1fd
cmp ecx, eax
mov dword [esp + 0x14], ecx
jl 0x10013110
movzx edx, word [0x453c09c0]
mov edi, dword [esp + 0x20]
add ebp, 0x1fa
sub edx, 5
cmp ebp, edx
mov dword [esp + 0x18], ebp
jl 0x10012953
movzx eax, word [0x45400ee6]
add edi, 0x1fa
sub eax, 5
cmp edi, eax
mov dword [esp + 0x20], edi
jl 0x10012930
mov esi, dword [esp + 0x28]
push esi
call fcn.1002bb90
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret