Function at 0x460d50
Capabilities:
Enumerate pe sections
Execute anti-debugging instructions
Get thread local storage value
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [0x4c6074]
sub esp, 0xb4
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov esi, dword [ecx + 4]
cmp esi, dword [ecx + 0xc]
jae 0x460d91
mov dword [esi], str.TtBuildJacTask
rdtsc
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x24]
mov dword [esi + 4], edx
add esi, 0xc
mov dword [ecx + 4], esi
mov eax, dword [ebx + 0x48]
mov ecx, dword [ebx + 0x4c]
mov esi, dword [ebx + 0x1c]
mov dword [esp + 0x24], eax
lea eax, [eax + ecx*4]
mov dword [esp + 0x58], ecx
mov ecx, dword [0x4c6060]
push ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x98], 0
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0x20]
lea edx, [esi*8 + 0x10]
and edx, 0xfffffff0
lea edi, [ecx + edx]
cmp edi, dword [eax + 0x2c]
ja 0x460de1
mov dword [eax + 0x20], edi
mov eax, ecx
mov dword [esp + 0x54], ecx
jmp 0x460def
mov edi, dword [eax]
push edx
mov edx, dword [edi + 0x14]
mov ecx, eax
call edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x9c], eax
mov eax, dword [0x4c6060]
or esi, 0x80000000
mov dword [esp + 0x98], esi
mov esi, dword [ebx + 0x1c]
push eax
mov dword [esp + 0xa8], 0
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0x20]
lea edx, [esi*8 + 0x10]
and edx, 0xfffffff0
lea edi, [ecx + edx]
cmp edi, dword [eax + 0x2c]
ja 0x460e44
mov dword [eax + 0x20], edi
mov eax, ecx
mov dword [esp + 0x4c], ecx
jmp 0x460e52
mov edi, dword [eax]
push edx
mov edx, dword [edi + 0x14]
mov ecx, eax
call edx
mov dword [esp + 0x4c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xac], eax
mov eax, dword [0x4c6060]
or esi, 0x80000000
mov dword [esp + 0xa8], esi
mov esi, dword [ebx + 0x1c]
push eax
mov dword [esp + 0xb8], 0
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0x20]
lea edx, [esi*8 + 0x10]
and edx, 0xfffffff0
lea edi, [ecx + edx]
cmp edi, dword [eax + 0x2c]
ja 0x460ea5
mov dword [eax + 0x20], edi
mov dword [esp + 0x5c], ecx
jmp 0x460eb3
mov edi, dword [eax]
push edx
mov edx, dword [edi + 0x14]
mov ecx, eax
call edx
mov dword [esp + 0x5c], eax
mov ebx, dword [esp + 0x58]
or esi, 0x80000000
mov eax, 0x40
cmp ebx, eax
mov dword [esp + 0xb8], esi
mov dword [esp + 0x1c], 1
jle 0x460edb
add eax, eax
cmp eax, ebx
jl 0x460ed5
lea edi, [eax*4]
mov eax, dword [0x4c6060]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0x20]
lea edx, [edi*4 + 0x10]
and edx, 0xfffffff0
lea esi, [ecx + edx]
cmp esi, dword [eax + 0x2c]
ja 0x460f0e
mov dword [eax + 0x20], esi
mov eax, ecx
mov dword [esp + 0x38], ecx
jmp 0x460f1c
mov esi, dword [eax]
push edx
mov edx, dword [esi + 0x14]
mov ecx, eax
call edx
mov dword [esp + 0x38], eax
lea ecx, [edi*4]
push ecx
push eax
lea ecx, [esp + 0x88]
call fcn.00408aa0
mov edi, dword [esp + 0x24]
xor esi, esi
test ebx, ebx
jle 0x460f58
jmp 0x460f40
mov edx, dword [edi + esi*4]
push esi
push edx
lea ecx, [esp + 0x88]
call fcn.00408b70
add esi, 1
cmp esi, ebx
jl 0x460f40
cmp edi, dword [esp + 0x2c]
mov dword [esp + 0x3c], 0x80
mov dword [esp + 0x28], edi
mov dword [esp + 0x40], 0
jae 0x46108f
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [eax + 0x90]
je 0x460f8e
mov dword [eax + 0x90], ecx
movzx ecx, word [eax + 0x9c]
mov esi, dword [eax + 0x98]
add dword [esp + 0x3c], 0x80
lea ebx, [ecx + ecx*2]
shl ebx, 4
add ebx, esi
cmp esi, ebx
jae 0x461075
jmp 0x460fc0
movzx eax, byte [esi + 0x1a]
mov cx, word [esp + 0x40]
mov edi, 1
sub edi, eax
mov dword [esp + 0x60], esi
mov word [esp + eax*2 + 0x64], cx
mov edx, dword [esi + edi*4 + 4]
push 0xffff
push edx
lea ecx, [esp + 0x88]
call fcn.00408c30
mov word [esp + edi*2 + 0x64], ax
mov ecx, dword [esp + 0x60]
xor eax, eax
cmp byte [esi + 0x1b], al
setne al
and dword [esp + 0x1c], eax
test byte [esi + 0x12], 3
mov eax, dword [esp + 0x64]
je 0x46102a
mov edx, dword [esp + 0xb4]
mov edi, dword [esp + 0x5c]
mov dword [edi + edx*8], ecx
mov dword [edi + edx*8 + 4], eax
add edx, 1
mov dword [esp + 0xb4], edx
cmp byte [esi + 0x13], 3
jae 0x46104e
mov edx, dword [esp + 0x94]
mov edi, dword [esp + 0x54]
mov dword [edi + edx*8], ecx
mov dword [edi + edx*8 + 4], eax
add edx, 1
mov dword [esp + 0x94], edx
jmp 0x46106a
mov edx, dword [esp + 0xa4]
mov edi, dword [esp + 0x4c]
mov dword [edi + edx*8], ecx
mov dword [edi + edx*8 + 4], eax
add edx, 1
mov dword [esp + 0xa4], edx
add esi, 0x30
cmp esi, ebx
jb 0x460fc0
mov eax, dword [esp + 0x28]
add dword [esp + 0x40], 1
add eax, 4
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
jb 0x460f76
lea ecx, [esp + 0x80]
call fcn.00409110
mov ecx, dword [0x4c6060]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push ecx
call esi
mov ecx, dword [esp + 0x38]
cmp ecx, dword [eax + 0x28]
mov dword [eax + 0x20], ecx
jne 0x4610c0
mov edx, dword [eax]
push ecx
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov ecx, dword [0x4c6074]
push ecx
call esi
mov ecx, dword [eax + 4]
cmp ecx, dword [eax + 0xc]
jae 0x4610e4
fild dword [esp + 0x58]
mov dword [ecx], 0x4b9088
add ecx, 8
fstp dword [ecx - 4]
mov dword [eax + 4], ecx
mov edx, dword [0x4c6074]
push edx
call esi
mov ecx, dword [eax + 4]
cmp ecx, dword [eax + 0xc]
jae 0x46110a
mov edx, dword [ebp + 8]
mov dword [ecx], str.MiNumConstraints
fild dword [edx + 0x1c]
add ecx, 8
fstp dword [ecx - 4]
mov dword [eax + 4], ecx
mov eax, dword [0x4c6074]
push eax
call esi
mov ecx, dword [eax + 4]
cmp ecx, dword [eax + 0xc]
jae 0x46112f
mov edx, dword [ebp + 8]
mov dword [ecx], str.MiNumJacobians
fild dword [edx + 0x10]
add ecx, 8
fstp dword [ecx - 4]
mov dword [eax + 4], ecx
mov ecx, dword [ebp + 0x10]
xor edi, edi
cmp dword [esp + 0x1c], edi
mov dword [esp + 0x34], edi
sete al
mov byte [ecx + 0x59], al
test al, al
setne al
mov byte [ecx + 0x58], al
mov edx, dword [ecx + 0x3c]
test al, al
mov eax, dword [ecx + 0x40]
mov dword [esp + 0x18], eax
sete byte [esp + 0x13]
or eax, 0xffffffff
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x18]
add eax, 4
mov word [eax], di
mov ecx, dword [0x4c6060]
push ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x88], edi
call esi
mov ecx, dword [eax + 0x20]
lea edx, [ecx + 0x490]
cmp edx, dword [eax + 0x2c]
ja 0x4611ac
mov ebx, ecx
mov dword [eax + 0x20], edx
mov dword [esp + 0x1c], ebx
jmp 0x4611c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x14]
push 0x490
call eax
mov dword [esp + 0x1c], eax
mov ebx, eax
mov ecx, dword [0x4c6060]
push ecx
call esi
mov edx, dword [esp + 0x58]
lea ecx, [edx*4 + 0x10]
mov edx, dword [eax + 0x20]
and ecx, 0xfffffff0
lea esi, [edx + ecx]
cmp esi, dword [eax + 0x2c]
ja 0x4611eb
mov dword [eax + 0x20], esi
mov dword [esp + 0x2c], edx
jmp 0x4611f9
mov edx, dword [eax]
push ecx
mov ecx, eax
mov eax, dword [edx + 0x14]
call eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], 0
cmp dword [esp + 0x24], 0
je 0x461211
lea eax, [esp + 0xa0]
jmp 0x461220
lea eax, [esp + 0x90]
mov dword [esp + 0x34], 0
cmp dword [eax + 4], 0
mov dword [esp + 0x3c], eax
je 0x4617ea
mov ecx, eax
mov edx, dword [ecx]
mov dword [esp + 0x54], edx
cmp dword [esp + 0x58], 0
jle 0x461250
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x2c]
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x3c]
mov edx, dword [edx + 4]
mov ecx, 1
add dword [esp + 0x40], ecx
lea edx, [eax + edx*8]
cmp eax, edx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x38], eax
jae 0x46159a
nop
movzx edx, word [eax + 4]
cmp dx, 0xffff
mov dword [esp + 0x7c], 0
jne 0x461299
lea edx, [esp + 0x7c]
jmp 0x4612a3
mov esi, dword [esp + 0x2c]
movzx edx, dx
lea edx, [esi + edx*4]
mov dword [esp + 0x4c], edx
movzx edx, word [eax + 6]
cmp dx, 0xffff
jne 0x4612b8
lea esi, [esp + 0x7c]
jmp 0x4612c2
mov esi, dword [esp + 0x2c]
movzx edx, dx
lea esi, [esi + edx*4]
cmp edi, 0x90
mov dword [esp + 0x74], esi
jne 0x46150b
mov ecx, dword [0x4c6060]
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
push ecx
mov dword [esp + 0x70], edi
mov dword [esp + 0x64], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0xb0]
xor esi, esi
cmp ecx, esi
je 0x46130e
add dword [eax + 0xb4], 0xffffffff
mov edx, dword [ecx]
mov dword [eax + 0xb0], edx
mov eax, ecx
jmp 0x461317
push 0xf
mov ecx, eax
call fcn.00402220
cmp eax, esi
je 0x461325
mov dword [eax + 0x14], esi
mov dword [eax + 0x10], esi
mov dword [eax], esi
mov esi, eax
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x46133b
mov eax, dword [ebp + 0x14]
mov dword [eax], esi
mov dword [eax + 4], 0
jmp 0x461343
mov dword [eax], esi
mov dword [eax + 0x10], edi
mov eax, dword [ebp + 0x14]
add dword [eax + 4], 1
mov eax, dword [ebp + 0x10]
mov ecx, 0x90
mov dword [esi + 4], eax
mov dword [esi + 0x14], ecx
mov eax, dword [eax + 0x30]
mov dword [esi + 8], eax
mov dword [esi + 0xc], edi
lea edx, [ebx + 4]
lea eax, [esi + 0x1c]
mov dword [esp + 0x34], ecx
mov ecx, dword [edx - 4]
mov edi, dword [ecx + 0xc]
mov dword [eax - 4], edi
movzx edi, word [ecx + 0x10]
mov word [eax + 0x10], di
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [ecx + 0x1c]
mov dword [eax + 4], edi
movzx edi, word [ecx + 0x20]
mov word [eax + 0x12], di
movzx edi, word [edx + 2]
mov bx, word [edx]
add edi, 1
mov word [eax + 0x16], di
add bx, 1
mov word [eax + 0x14], bx
mov edi, dword [ecx + 4]
add edi, 0xe0
mov dword [eax + 8], edi
mov edi, dword [ecx + 8]
add edi, 0xe0
mov dword [eax + 0xc], edi
movzx edi, word [ecx + 0x14]
add dword [esp + 0x14], edi
movzx ecx, word [ecx + 0x18]
mov edi, dword [esp + 0x18]
lea ecx, [edi + ecx*4]
add edx, 8
add eax, 0x1c
sub dword [esp + 0x34], 1
mov dword [esp + 0x18], ecx
jne 0x461368
mov eax, dword [esp + 0x14]
mov bl, byte [esp + 0x13]
add ecx, 0xf
add eax, 0x10
xor edi, edi
and ecx, 0xfffffff0
test bl, bl
mov dword [esp + 0x84], edi
mov dword [esp + 0x14], eax
mov dword [esi + 0x10], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x34], esi
je 0x4614e7
mov edx, dword [0x4c6060]
push edx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0x58]
cmp ecx, edi
je 0x46142f
add dword [eax + 0x5c], 0xffffffff
mov edx, dword [ecx]
mov dword [eax + 0x58], edx
mov eax, ecx
jmp 0x461438
push 4
mov ecx, eax
call fcn.00402220
cmp eax, edi
je 0x46144b
mov dword [eax], edi
mov byte [eax + 0x1c], 0
mov word [eax + 0x1e], di
mov dword [eax + 0x20], edi
jmp 0x46144d
xor eax, eax
mov edi, dword [esp + 0x48]
test edi, edi
je 0x461457
mov dword [edi], eax
mov ecx, dword [esp + 0x40]
cmp ecx, dword [esp + 0x28]
je 0x4614af
test ecx, ecx
jne 0x46146a
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
test edi, edi
mov dword [esp + 0x28], ecx
je 0x4614a3
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x50]
test ecx, ecx
movzx esi, word [edx]
mov edx, dword [esp + 0x20]
je 0x461496
cmp ecx, edx
je 0x461496
mov word [ecx + 0x1e], si
mov dword [ecx + 0x20], edx
mov ecx, dword [ecx]
test ecx, ecx
jne 0x461485
mov byte [edi + 0x1c], 1
add edi, 0x1e
mov dword [esp + 0x44], edi
jmp 0x4614a7
mov edx, dword [esp + 0x20]
mov dword [esp + 0x50], edx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x44]
add word [ecx], 1
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x60]
mov dword [eax + 4], ecx
mov ecx, dword [ecx + 0x30]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x6c]
sub esi, ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x18]
sub ecx, edx
mov dword [eax + 0x10], edx
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x84]
xor edx, edx
test bl, bl
mov ebx, dword [esp + 0x1c]
setne dl
add ecx, edx
mov dword [esp + 0x78], ecx
cmp byte [ebp + 0xc], 0
je 0x461516
cmp ecx, 1
jg 0x461576
mov edx, dword [esp + 0x4c]
mov edx, dword [edx]
test edx, edx
je 0x461524
cmp edx, ecx
jne 0x46152e
mov edx, dword [esi]
test edx, edx
je 0x461545
cmp edx, ecx
je 0x461545
mov edx, dword [esp + 0x38]
mov esi, dword [eax]
mov dword [edx], esi
mov esi, dword [eax + 4]
mov dword [edx + 4], esi
add edx, 8
mov dword [esp + 0x38], edx
jmp 0x461563
mov edx, dword [eax]
mov dword [ebx + edi*8], edx
mov edx, dword [eax + 4]
mov dword [ebx + edi*8 + 4], edx
mov edx, dword [esp + 0x4c]
add edi, 1
mov dword [edx], ecx
mov dword [esp + 0x84], edi
mov dword [esi], ecx
add eax, 8
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x70], eax
jb 0x461280
jmp 0x46159a
mov edx, dword [esp + 0x30]
cmp eax, edx
jae 0x46159a
mov ecx, dword [esp + 0x38]
mov esi, dword [eax]
mov dword [ecx], esi
mov esi, dword [eax + 4]
mov dword [ecx + 4], esi
add eax, 8
add ecx, 8
cmp eax, edx
jb 0x461582
mov dword [esp + 0x38], ecx
test edi, edi
je 0x4617d0
mov edx, dword [0x4c6060]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
push edx
mov dword [esp + 0x64], eax
mov dword [esp + 0x70], ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0xb0]
test ecx, ecx
je 0x4615dc
add dword [eax + 0xb4], 0xffffffff
mov edx, dword [ecx]
mov dword [eax + 0xb0], edx
mov eax, ecx
jmp 0x4615e5
push 0xf
mov ecx, eax
call fcn.00402220
test eax, eax
je 0x4615f7
xor ecx, ecx
mov dword [eax + 0x14], ecx
mov dword [eax + 0x10], ecx
mov dword [eax], ecx
mov esi, eax
jmp 0x4615fb
xor esi, esi
xor ecx, ecx
mov eax, dword [esp + 0x34]
cmp eax, ecx
jne 0x46160d
mov eax, dword [ebp + 0x14]
mov dword [eax], esi
mov dword [eax + 4], ecx
jmp 0x461619
mov edx, dword [esp + 0x14]
mov dword [eax], esi
mov dword [eax + 0x10], edx
mov eax, dword [ebp + 0x14]
add dword [eax + 4], 1
cmp edi, ecx
mov eax, dword [ebp + 0x10]
mov edx, dword [esp + 0x14]
mov dword [esi + 4], eax
mov dword [esi + 0x14], edi
mov eax, dword [eax + 0x30]
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
jle 0x4616be
lea edx, [ebx + 4]
lea eax, [esi + 0x1c]
mov dword [esp + 0x30], edi
mov ecx, dword [edx - 4]
mov edi, dword [ecx + 0xc]
mov dword [eax - 4], edi
movzx edi, word [ecx + 0x10]
mov word [eax + 0x10], di
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [ecx + 0x1c]
mov dword [eax + 4], edi
movzx edi, word [ecx + 0x20]
mov word [eax + 0x12], di
movzx edi, word [edx + 2]
mov bx, word [edx]
add edi, 1
mov word [eax + 0x16], di
add bx, 1
mov word [eax + 0x14], bx
mov edi, dword [ecx + 4]
add edi, 0xe0
mov dword [eax + 8], edi
mov edi, dword [ecx + 8]
add edi, 0xe0
mov dword [eax + 0xc], edi
movzx edi, word [ecx + 0x14]
add dword [esp + 0x14], edi
movzx ecx, word [ecx + 0x18]
mov edi, dword [esp + 0x18]
lea ecx, [edi + ecx*4]
add edx, 8
add eax, 0x1c
sub dword [esp + 0x30], 1
mov dword [esp + 0x18], ecx
jne 0x461645
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
add edx, 0xf
add eax, 0x10
xor edi, edi
and edx, 0xfffffff0
cmp byte [esp + 0x13], 0
mov dword [esp + 0x84], edi
mov dword [esp + 0x14], eax
mov dword [esi + 0x10], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x34], esi
je 0x4617d0
mov eax, dword [0x4c6060]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0x58]
xor esi, esi
cmp ecx, esi
je 0x461714
add dword [eax + 0x5c], 0xffffffff
mov edx, dword [ecx]
mov dword [eax + 0x58], edx
mov eax, ecx
jmp 0x46171d
push 4
mov ecx, eax
call fcn.00402220
cmp eax, esi
je 0x461730
mov dword [eax], esi
mov byte [eax + 0x1c], 0
mov word [eax + 0x1e], si
mov dword [eax + 0x20], esi
jmp 0x461732
xor eax, eax
mov edx, dword [esp + 0x48]
cmp edx, esi
je 0x46173c
mov dword [edx], eax
mov ecx, dword [esp + 0x40]
cmp ecx, dword [esp + 0x28]
je 0x461798
cmp ecx, esi
jne 0x46174f
mov esi, dword [ebp + 0x18]
mov dword [esi], eax
test edx, edx
mov dword [esp + 0x28], ecx
je 0x46178c
mov ecx, dword [esp + 0x50]
test ecx, ecx
mov edx, dword [esp + 0x44]
movzx edx, word [edx]
je 0x46177d
cmp ecx, dword [esp + 0x20]
je 0x46177d
mov esi, dword [esp + 0x20]
mov word [ecx + 0x1e], dx
mov dword [ecx + 0x20], esi
mov ecx, dword [ecx]
test ecx, ecx
jne 0x461766
mov ecx, dword [esp + 0x48]
mov byte [ecx + 0x1c], 1
add ecx, 0x1e
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x44]
add word [ecx], 1
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0x14]
mov dword [eax + 4], ecx
mov edx, dword [ecx + 0x30]
mov ecx, dword [esp + 0x60]
sub esi, ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x6c]
sub ecx, edx
mov dword [eax + 0x10], edx
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x3c]
sar eax, 3
test eax, eax
mov dword [ecx + 4], eax
jne 0x461236
mov eax, dword [esp + 0x24]
add eax, 1
cmp eax, 2
mov dword [esp + 0x24], eax
jl 0x461201
cmp byte [esp + 0x13], 0
je 0x461857
mov eax, dword [esp + 0x50]
test eax, eax
mov edx, dword [esp + 0x44]
movzx edx, word [edx]
je 0x461829
mov ecx, dword [esp + 0x20]
cmp eax, ecx
je 0x461829
mov word [eax + 0x1e], dx
mov dword [eax + 0x20], ecx
mov eax, dword [eax]
test eax, eax
jne 0x461818
mov ecx, dword [ebp + 0x10]
mov eax, dword [esp + 0x48]
mov byte [eax + 0x1c], 1
movzx eax, word [ecx + 0x54]
add eax, 1
mov edx, eax
add eax, 0xffffffff
shl edx, 7
add edx, dword [ecx + 0x30]
shr eax, 7
add eax, 1
mov dword [ecx + 0x34], edx
mov word [ecx + 0x38], ax
mov word [ecx + 0x3a], ax
mov ebx, dword [ebp + 0x14]
mov esi, dword [esp + 0xb4]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
xor eax, eax
cmp esi, eax
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], eax
je 0x4618af
mov eax, dword [0x4c6060]
push eax
call edi
push 3
lea ecx, [esi*4]
push ecx
mov ecx, eax
call fcn.00402380
xor ecx, ecx
test esi, esi
mov dword [ebx + 0xc], esi
mov dword [ebx + 8], eax
mov ebx, dword [esp + 0x5c]
jle 0x4618b3
lea esp, [esp]
mov edx, dword [ebx + ecx*8]
mov dword [eax + ecx*4], edx
add ecx, 1
cmp ecx, esi
jl 0x4618a0
jmp 0x4618b3
mov ebx, dword [esp + 0x5c]
mov eax, dword [0x4c6060]
push eax
call edi
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [eax + 0x28]
mov dword [eax + 0x20], ecx
jne 0x4618d1
mov edx, dword [eax]
push ecx
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov ecx, dword [0x4c6060]
push ecx
call edi
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [eax + 0x28]
mov dword [eax + 0x20], ecx
jne 0x4618f0
mov edx, dword [eax]
push ecx
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov ecx, dword [0x4c6060]
push ecx
call edi
cmp ebx, dword [eax + 0x28]
mov dword [eax + 0x20], ebx
jne 0x46190b
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
push ebx
call eax
mov esi, dword [esp + 0xb8]
test esi, esi
js 0x461936
mov ecx, dword [0x4c6060]
push ecx
call edi
and esi, 0x3fffffff
add esi, esi
add esi, esi
push 0x17
add esi, esi
push esi
push ebx
mov ecx, eax
call fcn.004023e0
mov edx, dword [0x4c6060]
push edx
call edi
mov ecx, dword [esp + 0xac]
cmp ecx, dword [eax + 0x28]
mov dword [eax + 0x20], ecx
jne 0x461958
mov edx, dword [eax]
push ecx
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov esi, dword [esp + 0xa8]
test esi, esi
js 0x46198a
mov ecx, dword [0x4c6060]
push ecx
call edi
mov edx, dword [esp + 0xa0]
and esi, 0x3fffffff
add esi, esi
add esi, esi
push 0x17
add esi, esi
push esi
push edx
mov ecx, eax
call fcn.004023e0
mov eax, dword [0x4c6060]
push eax
call edi
mov ecx, dword [esp + 0x9c]
cmp ecx, dword [eax + 0x28]
mov dword [eax + 0x20], ecx
jne 0x4619ab
mov edx, dword [eax]
push ecx
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov esi, dword [esp + 0x98]
test esi, esi
js 0x4619dd
mov ecx, dword [0x4c6060]
push ecx
call edi
mov edx, dword [esp + 0x90]
and esi, 0x3fffffff
add esi, esi
add esi, esi
push 0x17
add esi, esi
push esi
push edx
mov ecx, eax
call fcn.004023e0
mov eax, dword [0x4c6074]
push eax
call edi
mov esi, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 0xc]
jae 0x461a08
mov dword [ecx], 0x4b2454
rdtsc
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x30]
mov dword [ecx + 4], edx
add ecx, 0xc
mov dword [esi + 4], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret