Function at 0x4126a0
Capabilities:
Encode data using xor
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c7818
mov eax, dword fs:[0]
push eax
sub esp, 0xc20
mov eax, dword [0x524ee0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
mov ecx, dword [0x526340]
mov dword [ebp - 0xbd8], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xc08], eax
lea eax, [ecx + 1]
imul eax, ecx
cdq
mov ecx, 0x11
idiv ecx
cmp edx, 0xe
jne 0x412758
mov eax, dword [0x4e02d4]
movq xmm0, qword [str.o3oxHusTtd7w4]
mov dword [ebp - 0xc24], eax
mov ax, word [0x4e02d8]
mov word [ebp - 0xc20], ax
lea eax, [ebp - 0xc2c]
movq qword [ebp - 0xc2c], xmm0
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x412730
xor ecx, ecx
sub eax, edx
mov ebx, 4
mul ebx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a7aa0
push eax
call fcn.004a98f0
add esp, 8
push 0
lea ecx, [ebp - 0xc2c]
mov dword [ebp - 0xc04], 0
call fcn.00444480
mov esi, dword [0x526340]
mov dword [ebp - 4], 0
lea ecx, [esi + 1]
lea eax, [esi + 2]
imul eax, ecx
imul eax, esi
cdq
mov ecx, 7
idiv ecx
cmp edx, 2
jne 0x4127b2
lea ecx, [edx - 1]
cmp esi, ecx
jle 0x4127ac
lea esp, [esp]
mov eax, esi
cdq
idiv ecx
inc ecx
add ecx, edx
cmp ecx, esi
jl 0x4127a0
mov dword [0x526340], ecx
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0xbf0], edi
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov byte [ebp - 4], 1
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xbec], esi
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov byte [ebp - 4], 2
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0xc00], ebx
mov ecx, dword [ebp - 0xbd8]
push str.hive
mov byte [ebp - 4], 4
call fcn.00444a00
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004451d0
lea eax, [ebp - 0xbe8]
push eax
call fcn.004512c0
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [edi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 5
mov dword [ebp - 0xbdc], eax
mov dword [ebp - 0xbf8], ecx
cmp eax, ecx
je 0x4128a9
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
jl 0x412894
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x412894
push dword [ebp - 0xbdc]
call fcn.004047d0
add esp, 4
mov dword [ebp - 0xbdc], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x412889
mov edx, dword [ebp - 0xbf8]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xbdc]
lea edi, [eax + 0x10]
mov dword [ebp - 0xbf0], edi
jmp 0x4128a9
push dword [edx - 0xc]
lea ecx, [ebp - 0xbf0]
push edx
call fcn.00409670
mov edi, dword [ebp - 0xbf0]
mov edx, dword [ebp - 0xbe8]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4128cd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [edi - 0x10]
push ecx
mov ecx, dword [eax]
mov dword [ebp - 0xbdc], eax
mov eax, dword [ecx]
mov dword [ebp - 0xbf8], esp
call dword [eax + 0x10]
lea ecx, [edi - 0x10]
mov edx, eax
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0xbe8], eax
jl 0x41290d
cmp edx, dword [ecx]
jne 0x41290d
mov edx, dword [ebp - 0xbe8]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x412955
mov eax, dword [edx]
push 2
push dword [ecx + 4]
mov ecx, edx
call dword [eax]
mov edx, eax
mov dword [ebp - 0xbe8], edx
test edx, edx
jne 0x412929
call fcn.00409970
mov eax, dword [edi - 0xc]
mov dword [edx + 4], eax
mov ecx, dword [edi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push edi
push eax
lea eax, [edx + 0x10]
push eax
call fcn.004a98f5
mov ecx, dword [ebp - 0xbe8]
add esp, 0x10
lea eax, [ecx + 0x10]
mov ecx, dword [ebp - 0xbf8]
mov dword [ecx], eax
call fcn.00416540
add esp, 4
mov dword [ebp - 0xbe0], eax
test eax, eax
jne 0x412a8c
lea eax, [ebp - 0xbf0]
push eax
lea eax, [ebp - 0xbd8]
push str.enumRegKeys_hive_error_
push eax
call fcn.0040b7a0
add esp, 0xc
lea eax, [ebp - 0xbd8]
push eax
lea eax, [ebp - 0xbb4]
push eax
mov byte [ebp - 4], 6
call fcn.00451390
add esp, 8
push eax
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 7
call fcn.004443a0
push 0x4dfc64
lea ecx, [ebp - 0xc2c]
mov byte [ebp - 4], 8
call fcn.00444920
lea ecx, [ebp - 0xc1c]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 7
call fcn.00444690
cmp dword [ebp - 0xba0], 0x10
jb 0x412a03
push dword [ebp - 0xbb4]
call fcn.004a831e
add esp, 4
mov edx, dword [ebp - 0xbd8]
add edx, 0xfffffff0
or edi, 0xffffffff
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412a29
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412a46
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412a63
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xbdc]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412a83
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x4130cd
mov ecx, dword [ebp - 0xbd8]
push 0x4e0098
call fcn.00444a00
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004451d0
lea eax, [ebp - 0xc0c]
push eax
call fcn.004512c0
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [esi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 9
mov dword [ebp - 0xbe8], eax
mov dword [ebp - 0xbf8], ecx
cmp eax, ecx
je 0x412b35
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x412b20
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x412b20
push dword [ebp - 0xbe8]
call fcn.004047d0
add esp, 4
mov dword [ebp - 0xbe8], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x412b15
mov edx, dword [ebp - 0xbf8]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xbe8]
lea esi, [eax + 0x10]
mov dword [ebp - 0xbec], esi
jmp 0x412b35
push dword [edx - 0xc]
lea ecx, [ebp - 0xbec]
push edx
call fcn.00409670
mov esi, dword [ebp - 0xbec]
mov edx, dword [ebp - 0xc0c]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412b59
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xbd8]
push 0x4e00a4
call fcn.00445a20
test al, al
je 0x412b86
mov ecx, dword [ebp - 0xbd8]
push 0x4e00a4
call fcn.00444a00
mov ecx, eax
call fcn.004450d0
jmp 0x412b88
xor eax, eax
mov ecx, 0x20019
cmp eax, 0x20
jne 0x412b99
mov ecx, 0x20219
jmp 0x412ba4
mov edx, 0x20119
cmp eax, 0x40
cmove ecx, edx
lea eax, [ebp - 0xc04]
push eax
push ecx
push 0
push esi
push dword [ebp - 0xbe0]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x412d0a
push eax
lea eax, [ebp - 0xbe0]
push eax
call fcn.0043fd80
add esp, 8
push eax
lea eax, [ebp - 0xbd8]
push str.enumRegKeys_RegOpenKeyEx_
push eax
mov byte [ebp - 4], 0xa
call fcn.0040b7a0
add esp, 0xc
mov edx, dword [ebp - 0xbe0]
add edx, 0xfffffff0
or edi, 0xffffffff
mov byte [ebp - 4], 0xc
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412c12
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0xbd8]
push eax
lea eax, [ebp - 0xbb4]
push eax
call fcn.00451390
add esp, 8
push eax
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 0xd
call fcn.004443a0
push 0x4dfc64
lea ecx, [ebp - 0xc2c]
mov byte [ebp - 4], 0xe
call fcn.00444920
lea ecx, [ebp - 0xc1c]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 0xd
call fcn.00444690
cmp dword [ebp - 0xba0], 0x10
jb 0x412c80
push dword [ebp - 0xbb4]
call fcn.004a831e
add esp, 4
mov edx, dword [ebp - 0xbd8]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412ca3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412cc0
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412cdd
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xbdc]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412a83
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x4130cd
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov dword [ebp - 0xbd8], 0
mov dword [ebp - 0xbfc], 0x104
call dword [eax + 0xc]
lea ecx, [eax + 0x10]
mov dword [ebp - 0xbe4], ecx
mov byte [ebp - 4], 0xf
mov dword [ebp - 0xc0c], 0x14
cmp dword [ebp - 0xbfc], 0
jge 0x412d55
push 0x80070057
call fcn.00404410
mov eax, dword [ecx - 8]
sub eax, dword [ebp - 0xbfc]
mov edx, 1
sub edx, dword [ecx - 4]
or eax, edx
jge 0x412d81
push dword [ebp - 0xbfc]
lea ecx, [ebp - 0xbe4]
call fcn.004085d0
mov ecx, dword [ebp - 0xbe4]
push 0
push 0
push 0
push 0
lea eax, [ebp - 0xbfc]
push eax
push ecx
push dword [ebp - 0xbd8]
push dword [ebp - 0xc04]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
mov dword [ebp - 0xbe0], eax
cmp eax, 0x103
je 0x412f3f
mov ecx, dword [ebp - 0xbe4]
push dword [ecx - 8]
push ecx
call fcn.004a9e6a
mov edx, eax
add esp, 8
test edx, edx
js 0x412d4b
mov ecx, dword [ebp - 0xbe4]
cmp edx, dword [ecx - 8]
jg 0x412d4b
mov dword [ecx - 0xc], edx
mov eax, dword [ebp - 0xbe4]
xor ecx, ecx
mov word [eax + edx*2], cx
cmp dword [ebp - 0xbe0], ecx
jne 0x412e56
lea eax, [ebp - 0xbe4]
push eax
lea eax, [ebp - 0xbb4]
push eax
call fcn.00451390
add esp, 8
push eax
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 0x10
call fcn.004443a0
push eax
lea ecx, [ebp - 0xc2c]
mov byte [ebp - 4], 0x11
call fcn.00444f60
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 0x10
call fcn.00444690
cmp dword [ebp - 0xba0], 0x10
mov byte [ebp - 4], 0xf
jb 0x412e56
push dword [ebp - 0xbb4]
call fcn.004a831e
add esp, 4
mov ecx, dword [ebp - 0xbe4]
cmp dword [ecx - 0xc], 0
mov eax, dword [ecx - 0x10]
lea edx, [ecx - 0x10]
mov dword [ebp - 0xbe0], eax
je 0x412ec9
cmp dword [edx + 0xc], 0
jge 0x412e9e
cmp dword [ecx - 8], 0
jge 0x412e84
push 0x80070057
call fcn.00404410
mov dword [ecx - 0xc], 0
mov eax, dword [ebp - 0xbe4]
xor ecx, ecx
mov word [eax], cx
mov ecx, dword [ebp - 0xbe4]
jmp 0x412ec9
or eax, 0xffffffff
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x412eb5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xbe0]
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ecx, [eax + 0x10]
mov dword [ebp - 0xbe4], ecx
mov eax, dword [0x526340]
imul eax, eax
cdq
idiv dword [ebp - 0xc0c]
inc dword [ebp - 0xbd8]
mov dword [ebp - 0xbfc], 0x104
cmp edx, 0xd
jne 0x412d42
xor edx, edx
jmp 0x412f00
mov eax, dword [ebp + edx*4 - 0x238]
add eax, dword [ebp + edx*4 - 0x23c]
add edx, 5
add eax, dword [ebp + edx*4 - 0x254]
add eax, dword [ebp + edx*4 - 0x258]
add eax, dword [ebp + edx*4 - 0x25c]
imul eax, eax, 0xf6
add dword [0x526340], eax
cmp edx, 0x230
jb 0x412f00
jmp 0x412d42
lea ecx, [ebp - 0xc2c]
call fcn.00445410
test al, al
je 0x412f8f
push str.empty
lea ecx, [ebp - 0xc1c]
call fcn.00444440
push 0x4dfc64
lea ecx, [ebp - 0xc2c]
mov byte [ebp - 4], 0x12
call fcn.00444920
lea ecx, [ebp - 0xc1c]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0xc1c]
mov byte [ebp - 4], 0xf
call fcn.00444690
mov edx, dword [ebp - 0xbe4]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412fb3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov dword [ebp - 4], 2
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412fd4
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412ff4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4130cd
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4130cd
mov eax, dword [ebp - 0xc04]
test eax, eax
je 0x4130e8
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0xc04], 0
lea ecx, [ebp - 0xbd4]
call fcn.004465d0
mov byte [ebp - 4], 0x17
call fcn.00418970
test al, al
jne 0x413156
mov eax, dword [0x526340]
xor edx, edx
mov dword [ebp - 0xbdc], edx
lea edi, [ebp - 0x28c]
xor ebx, ebx
inc ebx
cdq
xor esi, esi
idiv ebx
mov dword [ebp - 0xbe0], ebx
mov dword [ebp - 0xc00], edx
lea ecx, [esi + 1]
mov esi, ecx
cmp esi, 0xe
jl 0x413127
mov ebx, dword [ebp - 0xbe0]
mov eax, dword [0x526340]
add edi, 0xe
cmp ebx, 5
jl 0x413115
mov edx, dword [ebp - 0xbdc]
inc edx
mov dword [ebp - 0xbdc], edx
cmp edx, 9
jl 0x413113
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xbd8], esi
mov eax, dword [0x526340]
imul eax, eax
cdq
mov ecx, 0x16
idiv ecx
mov byte [ebp - 4], 0x18
cmp edx, 0x13
jne 0x41321b
xor ecx, ecx
mov dword [ebp - 0xbec], ecx
lea esi, [ebp - 0xb9c]
jmp 0x4131a0
xor eax, eax
mov dword [ebp - 0xbdc], eax
mov dword [ebp - 0xbf0], esi
mov edi, edi
mov esi, dword [0x526340]
lea ebx, [eax + 1]
mov eax, esi
cdq
inc ecx
idiv ecx
mov eax, esi
mov ecx, esi
sub ecx, dword [ebp - 0xbec]
mov esi, dword [ebp - 0xbf0]
mov edi, edx
cdq
imul edi, ecx
idiv ebx
add edi, eax
sub edi, dword [ebp - 0xbdc]
push edi
push 0x4dfc48
call fcn.004aa80e
mov ecx, dword [ebp - 0xbec]
mov eax, ebx
add esi, 4
add esp, 8
mov dword [ebp - 0xbdc], eax
mov dword [ebp - 0xbf0], esi
cmp eax, 0x1d
jl 0x4131b0
inc ecx
mov dword [ebp - 0xbec], ecx
cmp ecx, 0x14
jl 0x4131a0
mov esi, dword [ebp - 0xbd8]
lea eax, [ebp - 0xc2c]
push eax
lea eax, [ebp - 0xbb4]
push eax
lea ecx, [ebp - 0xbd4]
call fcn.00449500
mov edx, eax
cmp dword [edx + 0x14], 0x10
mov byte [ebp - 4], 0x19
jb 0x413242
mov edx, dword [edx]
sub esp, 0x18
mov edi, esp
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp byte [edx], 0
jne 0x413261
xor ecx, ecx
jmp 0x41326f
mov ecx, edx
lea ebx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x413266
sub ecx, ebx
push ecx
push edx
mov ecx, edi
call fcn.00401460
lea eax, [ebp - 0xc00]
push eax
call fcn.004512c0
add esp, 0x1c
mov eax, dword [eax]
lea ebx, [esi - 0x10]
lea edi, [eax - 0x10]
mov byte [ebp - 4], 0x1a
cmp edi, ebx
je 0x413344
cmp dword [ebx + 0xc], 0
jl 0x41332f
mov ecx, dword [edi]
cmp ecx, dword [ebx]
jne 0x41332f
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [edi + 0xc], 0
mov ecx, eax
lea eax, [edi + 0xc]
jl 0x4132d0
cmp ecx, dword [edi]
jne 0x4132d0
mov esi, edi
mov ecx, 1
lock xadd dword [eax], ecx
jmp 0x41330d
mov eax, dword [ecx]
push 2
push dword [edi + 4]
call dword [eax]
mov esi, eax
test esi, esi
jne 0x4132e4
call fcn.00409970
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov ecx, dword [edi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.004a98f5
add esp, 0x10
or eax, 0xffffffff
lea ecx, [ebx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x413324
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0x10
mov dword [ebp - 0xbd8], esi
jmp 0x413344
push dword [eax - 0xc]
lea ecx, [ebp - 0xbd8]
push eax
call fcn.00409670
mov esi, dword [ebp - 0xbd8]
mov edx, dword [ebp - 0xc00]
add edx, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 0x19
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41336a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0xba0], 0x10
mov byte [ebp - 4], 0x18
jb 0x413385
push dword [ebp - 0xbb4]
call fcn.004a831e
add esp, 4
mov edi, dword [0x526340]
mov ecx, 0x18
lea eax, [edi + 1]
imul eax, edi
cdq
idiv ecx
cmp edx, 0xf
jne 0x413427
xor edx, edx
mov ecx, edx
and ecx, 1
dec ecx
not ecx
and ecx, edi
mov eax, edx
sar eax, 1
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edi
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
sar eax, 1
not ecx
and ecx, edi
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edi
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
sar eax, 1
not ecx
and ecx, edi
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edi
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
sar eax, 1
not ecx
and ecx, edi
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edi
sar ecx, 1
xor eax, ecx
inc edx
add edi, eax
cmp edx, 0x100
jl 0x4133a4
mov dword [0x526340], edi
mov edi, dword [ebp - 0xc08]
mov eax, 8
mov word [edi], ax
call fcn.00418910
test al, al
jne 0x413482
mov edi, dword [0x526340]
mov eax, 0x51eb851f
imul edi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0x64
sub edi, ecx
xor ecx, ecx
lea eax, [edi + 0x7b]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a7aa0
push eax
call fcn.004a98f0
mov edi, dword [ebp - 0xc08]
add esp, 8
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x413495
call fcn.00409970
add esi, 0xfffffff0
mov dword [edi + 8], eax
mov byte [ebp - 4], 0x17
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x4134b3
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0xbbc], 0x10
mov byte [ebp - 4], 0
mov dword [ebp - 0xbd4], 0x4dfc5c
jb 0x4134d8
push dword [ebp - 0xbd0]
call fcn.004a831e
add esp, 4
lea ecx, [ebp - 0xbd4]
mov dword [ebp - 0xbbc], 0xf
mov dword [ebp - 0xbc0], 0
mov byte [ebp - 0xbd0], 0
call fcn.004466d0
lea ecx, [ebp - 0xc2c]
mov dword [ebp - 4], 0xffffffff
call fcn.00444690
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004a8b24
mov esp, ebp
pop ebp
ret