Function at 0x845c850
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x84f91e3
mov eax, dword fs:[0]
push eax
sub esp, 0x168
mov eax, dword [0x184002c0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14c], eax
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c8a2
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0x40]
mov dword [ebp - 4], 0
push eax
call fcn.0845c5f0
add esp, 4
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c8e0
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x34]
mov byte [ebp - 4], 1
push eax
call fcn.0844f500
add esp, 4
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c91b
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x3c]
mov byte [ebp - 4], 2
push eax
call fcn.0845edb0
add esp, 4
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c956
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x50], eax
mov byte [ebp - 4], 3
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c985
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x48], eax
mov byte [ebp - 4], 4
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c9b4
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x4c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.0844ced0
add esp, 0xc
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845c9f7
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x44]
mov byte [ebp - 4], 6
push eax
call fcn.08456690
add esp, 4
call fcn.0840e590
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x845ca32
push 0x80004005
call fcn.0840d910
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 7
push eax
call fcn.08453d40
xorps xmm0, xmm0
mov dword [ebp - 0x14], 0
movdqu xmmword [ebp - 0x2c], xmm0
xor al, al
mov edi, 0x10402a0c
movq qword [ebp - 0x1c], xmm0
add esp, 4
mov dword [ebp - 0x28], 0xedb88320
mov dword [ebp - 0x24], 0x20
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov byte [ebp - 0x14], al
mov dword [ebp - 0x2c], edi
mov esi, dword [ebp - 0x40]
mov byte [ebp - 4], 8
cmp dword [esi - 4], 1
mov ecx, dword [esi - 0xc]
mov dword [ebp - 0x30], ecx
jle 0x845caba
push ecx
lea ecx, [ebp - 0x40]
call fcn.0840e2d0
mov al, byte [ebp - 0x14]
mov edi, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x40]
xor edx, edx
test al, al
jne 0x845cacc
lea ecx, [ebp - 0x2c]
call dword [edi + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
xor edi, edi
add eax, eax
je 0x845caf2
movzx ecx, byte [edi + esi]
inc edi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp edi, eax
jb 0x845cad5
push dword [esi - 8]
xor edx, 0x55
push esi
mov dword [ebp - 0x150], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [esi - 8]
jg 0x845d339
mov dword [esi - 0xc], eax
xor ecx, ecx
mov word [esi + eax*2], cx
mov esi, dword [ebp - 0x34]
cmp dword [esi - 4], 1
mov eax, dword [esi - 0xc]
mov dword [ebp - 0x30], eax
jle 0x845cb3c
push eax
lea ecx, [ebp - 0x34]
call fcn.0840e2d0
mov esi, dword [ebp - 0x34]
xor edx, edx
cmp byte [ebp - 0x14], dl
jne 0x845cb52
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
xor edi, edi
add eax, eax
je 0x845cb7d
jmp 0x845cb60
movzx ecx, byte [edi + esi]
inc edi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp edi, eax
jb 0x845cb60
push dword [esi - 8]
xor edx, 0x55
push esi
mov dword [ebp - 0x15c], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [esi - 8]
jg 0x845d339
mov edi, dword [ebp - 0x3c]
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
cmp dword [edi - 4], 1
mov eax, dword [edi - 0xc]
mov dword [ebp - 0x30], eax
jle 0x845cbc7
push eax
lea ecx, [ebp - 0x3c]
call fcn.0840e2d0
mov edi, dword [ebp - 0x3c]
xor edx, edx
cmp byte [ebp - 0x14], dl
jne 0x845cbdd
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
add eax, eax
je 0x845cc06
xor esi, esi
movzx ecx, byte [esi + edi]
inc esi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp esi, eax
jb 0x845cbe6
mov esi, dword [ebp - 0x34]
push dword [edi - 8]
xor edx, 0x55
push edi
mov dword [ebp - 0x164], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [edi - 8]
jg 0x845d339
mov dword [edi - 0xc], eax
xor ecx, ecx
mov word [edi + eax*2], cx
mov edi, dword [ebp - 0x50]
cmp dword [edi - 4], 1
mov eax, dword [edi - 0xc]
mov dword [ebp - 0x30], eax
jle 0x845cc50
push eax
lea ecx, [ebp - 0x50]
call fcn.0840e2d0
mov edi, dword [ebp - 0x50]
xor edx, edx
cmp byte [ebp - 0x14], dl
jne 0x845cc66
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
add eax, eax
je 0x845cc90
xor esi, esi
nop
movzx ecx, byte [esi + edi]
inc esi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp esi, eax
jb 0x845cc70
mov esi, dword [ebp - 0x34]
push dword [edi - 8]
xor edx, 0x55
push edi
mov dword [ebp - 0x168], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [edi - 8]
jg 0x845d339
mov dword [edi - 0xc], eax
xor ecx, ecx
mov word [edi + eax*2], cx
mov edi, dword [ebp - 0x48]
cmp dword [edi - 4], 1
mov eax, dword [edi - 0xc]
mov dword [ebp - 0x30], eax
jle 0x845ccda
push eax
lea ecx, [ebp - 0x48]
call fcn.0840e2d0
mov edi, dword [ebp - 0x48]
xor edx, edx
cmp byte [ebp - 0x14], dl
jne 0x845ccf0
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
add eax, eax
je 0x845cd20
xor esi, esi
lea esp, [esp]
movzx ecx, byte [esi + edi]
inc esi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp esi, eax
jb 0x845cd00
mov esi, dword [ebp - 0x34]
push dword [edi - 8]
xor edx, 0x55
push edi
mov dword [ebp - 0x158], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [edi - 8]
jg 0x845d339
mov dword [edi - 0xc], eax
xor ecx, ecx
mov word [edi + eax*2], cx
mov edi, dword [ebp - 0x4c]
cmp dword [edi - 4], 1
mov eax, dword [edi - 0xc]
mov dword [ebp - 0x30], eax
jle 0x845cd6a
push eax
lea ecx, [ebp - 0x4c]
call fcn.0840e2d0
mov edi, dword [ebp - 0x4c]
xor edx, edx
cmp byte [ebp - 0x14], dl
jne 0x845cd80
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
add eax, eax
je 0x845cdb0
xor esi, esi
lea esp, [esp]
movzx ecx, byte [esi + edi]
inc esi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp esi, eax
jb 0x845cd90
mov esi, dword [ebp - 0x34]
push dword [edi - 8]
xor edx, 0x55
push edi
mov dword [ebp - 0x160], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [edi - 8]
jg 0x845d339
mov dword [edi - 0xc], eax
xor ecx, ecx
mov word [edi + eax*2], cx
mov edi, dword [ebp - 0x44]
cmp dword [edi - 4], 1
mov eax, dword [edi - 0xc]
mov dword [ebp - 0x30], eax
jle 0x845cdfa
push eax
lea ecx, [ebp - 0x44]
call fcn.0840e2d0
mov edi, dword [ebp - 0x44]
xor edx, edx
cmp byte [ebp - 0x14], dl
jne 0x845ce10
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor edx, edx
mov eax, dword [ebp - 0x30]
add eax, eax
je 0x845ce40
xor esi, esi
lea esp, [esp]
movzx ecx, byte [esi + edi]
inc esi
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
lea eax, [ecx + ecx]
cmp esi, eax
jb 0x845ce20
mov esi, dword [ebp - 0x34]
push dword [edi - 8]
xor edx, 0x55
push edi
mov dword [ebp - 0x154], edx
call fcn.0849f12f
add esp, 8
test eax, eax
js 0x845d339
cmp eax, dword [edi - 8]
jg 0x845d339
mov dword [edi - 0xc], eax
xor ecx, ecx
mov word [edi + eax*2], cx
mov eax, dword [ebp - 0x38]
cmp dword [eax - 4], 1
mov ecx, dword [eax - 0xc]
mov dword [ebp - 0x148], ecx
jle 0x845ce8a
push ecx
lea ecx, [ebp - 0x38]
call fcn.0840e2d0
xor ecx, ecx
mov dword [ebp - 0x30], ecx
cmp byte [ebp - 0x14], cl
jne 0x845cea3
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
call dword [eax + 4]
mov byte [ebp - 0x14], 1
xor ecx, ecx
mov eax, dword [ebp - 0x148]
add eax, eax
mov dword [ebp - 0x148], eax
mov eax, dword [ebp - 0x38]
je 0x845cee6
mov edi, dword [ebp - 0x148]
xor esi, esi
mov edi, edi
movzx edx, byte [esi + eax]
inc esi
mov eax, dword [ebp - 0x20]
movzx ecx, cl
xor edx, ecx
mov ecx, dword [ebp - 0x30]
shr ecx, 8
xor ecx, dword [eax + edx*4]
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x30], ecx
cmp esi, edi
jb 0x845cec0
mov esi, dword [ebp - 0x34]
mov edi, dword [ebp - 0x44]
push dword [eax - 8]
xor ecx, 0x55
push eax
mov dword [ebp - 0x30], ecx
call fcn.0849f12f
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x845d339
mov eax, dword [ebp - 0x38]
cmp ecx, dword [eax - 8]
jg 0x845d339
push dword [ebp - 0x30]
xor edx, edx
mov dword [eax - 0xc], ecx
push dword [ebp - 0x154]
mov word [eax + ecx*2], dx
lea eax, [ebp - 0x51]
push dword [ebp - 0x160]
mov dword [ebp - 0x144], 0x6f645266
push dword [ebp - 0x158]
mov dword [ebp - 0x140], 0x76705264
push dword [ebp - 0x168]
mov dword [ebp - 0x13c], 0x37466762
push dword [ebp - 0x164]
mov dword [ebp - 0x138], 0x2f464263
push dword [ebp - 0x15c]
mov dword [ebp - 0x134], 0x34426864
push dword [ebp - 0x150]
mov dword [ebp - 0x130], 0x6c6c415a
sub esp, 0xc
mov dword [ebp - 0x12c], 0x685a6864
mov ecx, esp
mov dword [ebp - 0x128], 0x5330785a
mov dword [ebp - 0x124], 0x796c4249
mov dword [ebp - 0x120], 0x4773684d
push dword [ebp - 0x14c]
mov dword [ebp - 0x11c], 0x76735259
mov dword [ebp - 0x118], 0x4645334e
mov dword [ebp - 0x114], 0x636b7766
mov dword [ebp - 0x110], 0x72453348
mov dword [ebp - 0x10c], 0x6e306a50
mov dword [ebp - 0x108], 0x6a6b6a45
mov dword [ebp - 0x104], 0x71557742
mov dword [ebp - 0x100], 0x7767324c
mov dword [ebp - 0xfc], 0x55597965
mov dword [ebp - 0xf8], 0x36316847
mov dword [ebp - 0xf4], 0x686f6962
mov dword [ebp - 0xf0], 0x76394146
mov dword [ebp - 0xec], 0x69466745
mov dword [ebp - 0xe8], 0x46417a4e
mov dword [ebp - 0xe4], 0x4b557761
mov dword [ebp - 0xe0], 0x70344145
mov dword [ebp - 0xdc], 0x706b7842
mov dword [ebp - 0xd8], 0x5477534c
mov dword [ebp - 0xd4], 0x70424148
mov dword [ebp - 0xd0], 0x4455674e
mov dword [ebp - 0xcc], 0x6a63684c
mov dword [ebp - 0xc8], 0x4163514d
mov dword [ebp - 0xc4], 0x484d794a
mov dword [ebp - 0xc0], 0x5673414f
mov dword [ebp - 0xbc], 0x6530774e
mov dword [ebp - 0xb8], 0x4d417841
mov dword [ebp - 0xb4], 0x39307a50
mov dword [ebp - 0xb0], 0x6867514c
mov dword [ebp - 0xac], 0x30785245
mov dword [ebp - 0xa8], 0x6c6b4846
mov dword [ebp - 0xa4], 0x31737843
mov dword [ebp - 0xa0], 0x71384761
mov dword [ebp - 0x9c], 0x2f59514d
mov dword [ebp - 0x98], 0x4c777848
mov dword [ebp - 0x94], 0x59417748
mov dword [ebp - 0x90], 0x6745434c
mov dword [ebp - 0x8c], 0x4c4d6943
mov dword [ebp - 0x88], 0x2b517962
mov dword [ebp - 0x84], 0x4863434f
mov dword [ebp - 0x80], 0x67386a4a
mov dword [ebp - 0x7c], 0x774d5362
mov dword [ebp - 0x78], 0x4c41775a
mov dword [ebp - 0x74], 0x6c6c6749
mov dword [ebp - 0x70], 0x4e517941
mov dword [ebp - 0x6c], 0x30734848
mov dword [ebp - 0x68], 0x37734146
mov dword [ebp - 0x64], 0x3164514a
mov dword [ebp - 0x60], 0x4463524d
mov dword [ebp - 0x5c], 0x44347a49
mov dword [ebp - 0x58], 0x41415161
mov word [ebp - 0x54], 0x4a41
mov byte [ebp - 0x52], 0x73
mov dword [ecx], edx
mov dword [ecx + 4], edx
mov dword [ecx + 8], edx
push eax
lea eax, [ebp - 0x144]
push eax
push edx
call fcn.08405280
lea eax, [ebp - 0x174]
push eax
call fcn.0844ba20
add esp, 0x10
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
mov byte [ebp - 4], 9
sar eax, 1
jne 0x845d1d1
push str.invalid_vector_T__subscript
call fcn.0847ecf2
push ecx
push dword [ebp - 0x14c]
call fcn.08448d50
mov eax, dword [ebp - 0x174]
add esp, 0x28
test eax, eax
je 0x845d1f3
push eax
call fcn.0849b460
add esp, 4
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x2c], 0x104029fc
test eax, eax
je 0x845d21f
push eax
call fcn.0849b460
add esp, 4
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov edx, dword [ebp - 0x38]
or eax, 0xffffffff
add edx, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x845d240
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 5
or edi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x845d260
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4c]
mov ecx, edi
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x845d280
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x48]
mov ecx, edi
add edx, 0xfffffff0
mov byte [ebp - 4], 3
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x845d2a0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x50]
mov ecx, edi
add edx, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x845d2c0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x3c]
mov ecx, edi
add edx, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x845d2e0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
mov ecx, edi
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x845d2fd
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x845d31e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0849cd1e
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.0840d910
int3