Function at 0x46b160
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4e69f8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18c
xor eax, eax
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1b0]
cmp esi, eax
push edi
mov dword [esp + 0x78], ecx
mov dword [esp + 0x84], eax
mov byte [esp + 0x13], al
mov byte [esp + 0x32], al
mov byte [esp + 0x33], al
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x68], 1
mov dword [esp + 0x54], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], 0x4f49a8
mov dword [esp + 0x48], 0xffffffff
mov ebx, 4
mov ebp, 8
je 0x46b940
cmp word [esi], ax
je 0x46b940
lea esp, [esp]
mov di, word [esi]
cmp di, 9
jb 0x46b213
cmp di, 0xd
jbe 0x46b8ff
cmp di, 0x20
je 0x46b8ff
cmp di, 0x2e
je 0x46b8f2
cmp di, 0x24
je 0x46b8f2
cmp di, 0x25
je 0x46b8f2
cmp di, 0x2a
jne 0x46b24b
or byte [esp + 0x13], 4
jmp 0x46b8f2
cmp di, 0x7e
jne 0x46b2a8
cmp word [esi + 2], di
jne 0x46b264
or byte [esp + 0x13], 2
add esi, 2
jmp 0x46b8f2
cmp di, 0x7e
jne 0x46b2a8
cmp word [esi + 2], 0x2e
jne 0x46b27e
or byte [esp + 0x13], 8
add esi, 2
jmp 0x46b8f2
cmp di, 0x7e
jne 0x46b2a8
cmp word [esi + 2], 0x2a
jne 0x46b298
or byte [esp + 0x13], 0xa
add esi, 2
jmp 0x46b8f2
cmp di, 0x7e
jne 0x46b2a8
or byte [esp + 0x13], 1
jmp 0x46b8f2
push ebx
push esi
push str._env
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b2cb
add esi, 6
mov dword [esp + 0x68], 0x40
jmp 0x46b8f2
push ebx
push esi
push str._raw
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b2ee
add esi, 6
mov dword [esp + 0x54], 0x40
jmp 0x46b8f2
cmp di, 0x3c
jne 0x46b2fe
mov byte [esp + 0x32], 1
jmp 0x46b8f2
cmp di, 0x3e
jne 0x46b30e
mov byte [esp + 0x32], 2
jmp 0x46b8f2
push ebx
push esi
push str._def
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b339
mov al, byte [esp + 0x1b8]
add esi, 6
add al, 2
mov byte [esp + 0x1b8], al
jmp 0x46b8f2
push ebx
push esi
push str._tom
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b35c
add esi, 6
mov dword [esp + 0x1c], 1
jmp 0x46b8f2
push ebx
push esi
push str._tow
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b37f
add esi, 6
mov dword [esp + 0x1c], 2
jmp 0x46b8f2
push 5
push esi
push str._copy
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b39e
add esi, ebp
mov dword [esp + 0x1c], ebx
jmp 0x46b8f2
push 5
push esi
push str._addr
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b3bd
add esi, ebp
mov dword [esp + 0x1c], ebp
jmp 0x46b8f2
push ebp
push esi
push str._mkdummy
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b3e0
add esi, 0xe
mov dword [esp + 0x1c], 0x81
jmp 0x46b8f2
push 5
push esi
push str._make
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b403
add esi, ebp
mov dword [esp + 0x1c], 0x80
jmp 0x46b8f2
push 5
push esi
push str._swap
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b426
add esi, ebp
mov dword [esp + 0x1c], 0x20
jmp 0x46b8f2
push 5
push esi
push str._char
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b449
mov dword [esp + 0x18], 1
add esi, ebp
jmp 0x46b8f2
push 6
push esi
push str._wchar
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b46d
mov dword [esp + 0x18], 2
add esi, 0xa
jmp 0x46b8f2
push 6
push esi
push str._short
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b491
mov dword [esp + 0x18], 2
add esi, 0xa
jmp 0x46b8f2
push ebx
push esi
push str._ptr
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b4b0
mov dword [esp + 0x18], ebx
add esi, 6
jmp 0x46b8f2
push 6
push esi
push str._float
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b4d4
mov dword [esp + 0x74], ebx
mov dword [esp + 0x18], ebx
add esi, 0xa
jmp 0x46b8f2
push 7
push esi
push str._double
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b4fb
mov dword [esp + 0x80], ebp
mov dword [esp + 0x18], ebp
add esi, 0xc
jmp 0x46b8f2
push ebp
push esi
push str._ldouble
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b51e
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x18], ebp
add esi, 0xe
jmp 0x46b8f2
push 6
push esi
push str._int64
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b53e
add esi, 0xa
mov dword [esp + 0x18], ebp
jmp 0x46b8f2
push 9
push esi
push str._longlong
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b55e
add esi, 0x10
mov dword [esp + 0x18], ebp
jmp 0x46b8f2
push 5
push esi
push str._long
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b57d
mov dword [esp + 0x18], ebx
add esi, ebp
jmp 0x46b8f2
push 5
push esi
push str._long
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b59c
mov dword [esp + 0x18], ebx
add esi, ebp
jmp 0x46b8f2
push 5
push esi
push str._zero
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b5c0
add esi, 0xa
mov dword [esp + 0x48], 0
jmp 0x46b8f2
push 7
push esi
push str._intsys
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b5dc
add esi, 0xc
jmp 0x46b7dc
push ebx
push esi
push str._int
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b60f
mov ax, word [esi + 8]
and ax, 0xffdf
cmp ax, 0x41
jb 0x46b603
cmp ax, 0x5a
jbe 0x46b60f
add esi, 6
mov dword [esp + 0x18], ebx
jmp 0x46b8f2
push 5
push esi
push 0x4f5dc8
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b63f
mov eax, 1
add esi, ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], str.0x_I64X
jmp 0x46b8f2
push 6
push esi
push 0x4f5dc0
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b670
mov eax, 2
add esi, 0xa
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], str.0x_I64X
jmp 0x46b8f2
push 6
push esi
push 0x4f5db8
call fcn.00440450
add esp, 0xc
test al, al
jne 0x46b653
push ebx
push esi
push 0x4f5db0
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b6b3
add esi, 6
mov dword [esp + 0x34], 0x64
mov dword [esp + 0x18], ebx
mov dword [esp + 0x60], str.0x_I64X
jmp 0x46b8f2
push 6
push esi
push 0x4f5da8
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b6db
add esi, 0xa
mov dword [esp + 0x74], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x34], ebx
jmp 0x46b8f2
push 7
push esi
push 0x4f5da0
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b706
add esi, 0xc
mov dword [esp + 0x80], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x34], ebp
jmp 0x46b8f2
push ebp
push esi
push 0x4f5d94
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b72d
add esi, 0xe
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x34], ebp
jmp 0x46b8f2
push 6
push esi
push 0x4f5d8c
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b751
add esi, 0xa
mov dword [esp + 0x18], ebp
mov dword [esp + 0x34], ebp
jmp 0x46b8f2
push 9
push esi
push 0x4f5d80
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b775
add esi, 0x10
mov dword [esp + 0x18], ebp
mov dword [esp + 0x34], ebp
jmp 0x46b8f2
push 5
push esi
push 0x4f5d78
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b7a0
add esi, ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x60], str.0x_I64X
jmp 0x46b8f2
push 6
push esi
push str._intpe
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b7c4
add esi, 0xa
mov dword [esp + 0x18], ebx
mov dword [esp + 0x34], ebx
jmp 0x46b8f2
push 7
push esi
push 0x4f5d68
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b7f6
mov dword [esp + 0x34], ebx
cmp byte [0x518de1], 3
mov dword [esp + 0x18], ebx
jne 0x46b8f2
mov dword [esp + 0x18], ebp
jmp 0x46b8f2
push ebx
push esi
push 0x4f5d60
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b82d
mov ax, word [esi + 8]
and ax, 0xffdf
cmp ax, 0x41
jb 0x46b81d
cmp ax, 0x5a
jbe 0x46b82d
add esi, 6
mov dword [esp + 0x18], ebx
mov dword [esp + 0x34], ebx
jmp 0x46b8f2
push ebx
push esi
push str._ret
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b882
add esi, ebp
cmp word [esi], 0x3a
mov dword [esp + 0x2c], 1
mov dword [esp + 0x44], esi
jne 0x46b85b
add esi, 2
mov dword [esp + 0x44], esi
mov ax, word [esi]
call fcn.00445b20
test al, al
je 0x46b87d
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x48]
push ecx
call fcn.00449a90
mov esi, dword [esp + 0x4c]
add esp, 8
sub esi, 2
jmp 0x46b8f2
push ebx
push esi
push str._get
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b8d7
add esi, ebp
cmp word [esi], 0x3a
mov dword [esp + 0x14], 1
mov dword [esp + 0x44], esi
jne 0x46b8b0
add esi, 2
mov dword [esp + 0x44], esi
mov ax, word [esi]
call fcn.00445b20
test al, al
je 0x46b87d
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x48]
push eax
call fcn.00449a90
mov esi, dword [esp + 0x4c]
add esp, 8
sub esi, 2
jmp 0x46b8f2
push 3
push esi
push 0x4f5d4c
call fcn.00440450
add esp, 0xc
test al, al
je 0x46b8f2
add esi, ebx
mov byte [esp + 0x33], 1
add esi, 2
cmp word [esi], 0
jne 0x46b200
mov eax, dword [esp + 0x54]
xor edi, edi
cmp eax, edi
je 0x46b942
mov ecx, dword [esp + 0x1b4]
xor eax, eax
mov ax, word [ecx]
cmp ax, di
je 0x46b949
lea ebx, [ebx]
cmp ax, 9
jb 0x46b92c
cmp ax, 0xd
jbe 0x46b949
cmp ax, 0x20
je 0x46b949
mov ax, word [ecx + 2]
add ecx, 2
cmp ax, di
jne 0x46b920
jmp 0x46b949
xor edi, edi
mov ecx, dword [esp + 0x1ac]
cmp ecx, edi
mov eax, ecx
mov dword [esp + 0x58], eax
je 0x46b971
mov cx, word [eax]
cmp cx, 9
jb 0x46b962
cmp cx, 0xd
jbe 0x46b968
cmp cx, 0x20
jne 0x46b971
add eax, 2
mov dword [esp + 0x58], eax
jmp 0x46b953
cmp word [eax], 0x26
jne 0x46b996
mov cl, byte [esp + 0x1b8]
mov edi, edi
add eax, 2
inc cl
mov dword [esp + 0x58], eax
cmp word [eax], 0x26
je 0x46b980
mov byte [esp + 0x1b8], cl
push 2
mov dword [esp + 0x40], edi
call fcn.00445f00
add esp, 4
cmp eax, edi
mov dword [esp + 0x3c], eax
je 0x46b9af
mov word [eax], di
mov eax, dword [esp + 0x58]
mov dword [esp + 0x40], eax
mov cx, word [eax]
cmp cx, di
mov dword [esp + 0x1a4], edi
je 0x46b9db
cmp cx, 0x3d
je 0x46b9db
add eax, 2
mov dword [esp + 0x58], eax
mov cx, word [eax]
cmp cx, di
jne 0x46b9c6
mov dword [esp + 0x20], 0x4ebd38
cmp word [eax], 0x3d
mov ecx, eax
mov byte [esp + 0x3b], 0
je 0x46b9f7
mov byte [esp + 0x3b], 1
jmp 0x46ba02
add eax, 2
mov dword [esp + 0x58], eax
mov dword [esp + 0x20], eax
mov word [ecx], di
mov ecx, dword [esp + 0x40]
push ecx
call fcn.0041e7c0
mov eax, dword [esp + 0x44]
add esp, 4
cmp word [eax], 0x7e
jne 0x46ba87
add eax, 2
mov dword [esp + 0x40], eax
mov cx, word [eax]
cmp cx, di
mov edx, eax
mov dword [esp + 0x84], edx
je 0x46ba49
cmp cx, 0x7e
je 0x46ba49
add eax, 2
mov dword [esp + 0x40], eax
mov cx, word [eax]
cmp cx, di
jne 0x46ba34
cmp word [eax], 0x7e
je 0x46ba73
mov eax, dword [esp + 0x3c]
cmp eax, edi
je 0x46ba69
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push edi
push edx
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, 0x80070057
jmp 0x46cad4
mov word [eax], di
add dword [esp + 0x40], 2
cmp word [edx], di
jne 0x46ba87
mov dword [esp + 0x84], edi
push 2
mov dword [esp + 0x28], edi
call fcn.00445f00
add esp, 4
cmp eax, edi
mov dword [esp + 0x24], eax
je 0x46baa0
mov word [eax], di
mov esi, dword [esp + 0x78]
push 0x3b
push 0x2c
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x4c]
push ecx
mov ecx, esi
mov byte [esp + 0x1b4], 1
call fcn.0043b730
push 0x3b
push 0x2c
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x4c]
push eax
mov ecx, esi
call fcn.0043b730
cmp dword [esp + 0x1c], ebp
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x40], eax
je 0x46bafd
cmp word [eax], di
jne 0x46bafd
mov eax, dword [esp + 0x24]
cmp word [eax], di
jne 0x46bafd
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x46caaa
mov bl, byte [esp + 0x1b8]
mov ecx, dword [esp + 0x78]
cmp bl, 2
setge bl
mov al, bl
neg al
mov edi, ecx
mov dword [esp + 0x64], edi
mov dword [esp + 0x44], ecx
sbb eax, eax
and eax, ecx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jle 0x46bb42
dec eax
js 0x46bb3a
inc eax
dec eax
mov ecx, dword [ecx + 0x28]
jne 0x46bb30
mov dword [esp + 0x44], ecx
test bl, bl
je 0x46bb42
mov dword [esp + 0x54], ecx
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x46bb5a
dec eax
js 0x46bb5a
inc eax
mov edi, edi
dec eax
mov edi, dword [edi + 0x28]
jne 0x46bb50
mov dword [esp + 0x64], edi
mov al, byte [esp + 0x3b]
test al, al
je 0x46bb6f
mov byte [esp + 0x32], 0
mov dword [esp + 0x1c], 0
push 0x5194ec
mov dword [esp + 0x80], 0x5194ec
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor ecx, ecx
mov dword [esp + 0x94], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], ecx
xor ebp, ebp
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], ecx
push 2
mov dword [esp + 0x50], ebp
mov byte [esp + 0x2f], 0
mov dword [esp + 0x90], ebp
mov dword [esp + 0x94], ebp
mov dword [esp + 0xbc], ecx
mov dword [esp + 0x18], ebp
call fcn.00445f00
mov esi, eax
add esp, 4
test esi, esi
mov dword [esp + 0x14], esi
je 0x46bc05
mov word [esi], bp
mov esi, dword [esp + 0x14]
mov dword [esp + 0x2c], 0
lea eax, [esp + 0x7c]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x48]
test eax, eax
lea edx, [esp + 0x2c]
mov byte [esp + 0x1a4], 4
mov dword [esp + 0x6c], edx
jl 0x46bc8c
cdq
lea ecx, [esp + 0x4c]
mov dword [esp + 0x50], edx
push ecx
lea edx, [esp + 0x24]
push edx
mov dword [esp + 0x54], eax
call fcn.00449970
add esp, 8
test eax, eax
jle 0x46bfc9
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x46bc7e
jmp 0x46bc60
mov ax, word [ecx]
cmp ax, 9
jb 0x46bc6f
cmp ax, 0xd
jbe 0x46bc75
cmp ax, 0x20
jne 0x46bc7e
add ecx, 2
mov dword [esp + 0x20], ecx
jmp 0x46bc60
movzx eax, byte [esp + 0x4c]
mov dword [esp + 0x48], eax
jmp 0x46bfc9
mov al, byte [esp + 0x33]
test al, al
je 0x46bcb0
mov ecx, dword [esp + 0x20]
push ecx
push edi
call fcn.0044a320
add esp, 8
mov dword [esp + 0x20], eax
mov ebp, 2
jmp 0x46bfc9
mov eax, dword [esp + 0x1c]
test al, al
jns 0x46beae
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x38]
xor edi, edi
push ecx
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x3c], edx
call fcn.00449970
add esp, 8
test eax, eax
jle 0x46bcf1
lea edx, [esp + 0x34]
push edx
call fcn.0043f2e0
add esp, 4
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], ebp
cmp word [eax], di
je 0x46bd09
add eax, 2
mov dword [esp + 0x34], eax
cmp ebp, edi
jne 0x46bd1c
mov dword [esp + 0x20], 0x4ec037
xor ebp, ebp
jmp 0x46bfc9
cmp word [eax], 0x2a
sete bl
test bl, bl
je 0x46bd2e
add eax, 2
mov dword [esp + 0x34], eax
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x38]
xor edi, edi
push ecx
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
call fcn.00449970
add esp, 8
test eax, eax
jle 0x46bd54
mov ebp, dword [esp + 0x4c]
jmp 0x46bd71
test bl, bl
push ebp
je 0x46bd63
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebp, eax
jmp 0x46bd6d
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, eax
shl ebp, 1
mov esi, dword [esp + 0x14]
cmp ebp, edi
jge 0x46bdd5
cmp esi, edi
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
je 0x46bd8d
mov edx, dword [0x51927c]
add esi, 0xfffffff8
push esi
push edi
push edx
call ebx
push 0x5194ec
mov dword [esp + 0x18], edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x46bdb1
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push edi
push eax
call ebx
mov eax, dword [esp + 0x3c]
cmp eax, edi
mov dword [esp + 0x24], edi
je 0x46bdcb
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push edi
push ecx
call ebx
mov eax, 0x80070057
jmp 0x46cad4
mov eax, dword [esp + 0x1c]
and ebp, 0x3fffffff
cmp eax, 0x81
jne 0x46bfc9
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x64]
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push esi
mov byte [esp + 0x1b0], 5
mov dword [esp + 0x78], edi
call fcn.0041e533
cmp eax, ebx
je 0x46be17
cmp dword [eax + 0xc], ebx
jge 0x46be2d
mov dword [eax + 4], ebx
jmp 0x46be2d
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
push ebx
push 0xffffffffffffffff
push 0x4ebd38
push edx
call fcn.0041e465
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
or ebp, 0x80000000
mov dword [eax + 0xc], ebp
mov ecx, dword [eax + 4]
cmp ecx, ebx
mov dword [eax + 4], edi
je 0x46be53
mov eax, dword [0x51927c]
add ecx, 0xfffffff8
push ecx
push ebx
push eax
call esi
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x46be69
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push ecx
call esi
push 0x5194ec
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0x46be8e
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push edx
call esi
mov eax, dword [esp + 0x3c]
cmp eax, ebx
mov dword [esp + 0x24], ebx
je 0x46cad2
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push ebx
push eax
jmp 0x46cad0
test eax, eax
je 0x46c1e6
mov ebp, dword [esp + 0x78]
xor ebx, ebx
push ebx
push 0x2c
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x2c]
push edx
mov ecx, ebp
call fcn.0043b730
mov eax, dword [esp + 0x14]
push 0xffffffffffffffff
push ebx
push eax
mov ecx, edi
call fcn.0041e533
cmp eax, ebx
jne 0x46bf47
mov eax, dword [esp + 0x14]
cmp eax, ebx
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
je 0x46beff
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push ecx
call esi
push 0x5194ec
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0x46bf24
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push edx
call esi
mov eax, dword [esp + 0x3c]
cmp eax, ebx
mov dword [esp + 0x24], ebx
je 0x46bf3d
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push ebx
push eax
call esi
mov eax, 0x80070057
jmp 0x46cad4
mov ecx, dword [eax + 4]
lea esi, [eax + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1c]
cmp ecx, 8
jne 0x46bfb1
mov eax, dword [eax + 0xc]
mov edx, dword [esp + 0x24]
push edx
and eax, 0x3fffffff
push eax
push ebp
call fcn.00448b60
mov eax, dword [esp + 0x4c]
add esp, 0xc
cmp word [eax], bx
je 0x46c6d9
mov ecx, dword [esi]
push ecx
lea edx, [esp + 0xc0]
push str.0x_p
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [esp + 0xc8]
add esp, 0xc
mov ecx, eax
push ecx
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, eax
shl ebp, 1
jmp 0x46bfc9
cmp ecx, 4
jne 0x46c0c7
mov edx, dword [esi]
mov dword [esp + 0x20], edx
mov ebp, dword [eax + 0xc]
and ebp, 0x3fffffff
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
push 0xffffffffffffffff
push edx
push eax
mov ecx, ebx
call fcn.0041e533
mov esi, eax
test esi, esi
mov edi, esi
jne 0x46c8c8
mov eax, dword [esp + 0x48]
test eax, eax
jge 0x46c041
mov cl, byte [esp + 0x2b]
test cl, cl
mov eax, 0x4ebd38
jne 0x46c005
mov eax, dword [esp + 0x20]
xor edx, edx
test cl, cl
setne dl
mov ecx, ebx
dec edx
and edx, ebp
push edx
push 0xffffffffffffffff
push eax
mov eax, dword [esp + 0x4c]
push eax
call fcn.0041e465
mov esi, eax
mov eax, dword [esp + 0x84]
test eax, eax
je 0x46c039
test esi, esi
je 0x46c041
push eax
lea ecx, [esi + 8]
call fcn.004575a0
test esi, esi
jne 0x46c8c8
mov eax, dword [esp + 0x2c]
test eax, eax
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
je 0x46c05e
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push ecx
call esi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x46c075
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push edx
call esi
push 0x5194ec
mov dword [esp + 0x18], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x46c09e
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push 0
push eax
call esi
mov eax, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0x24], 0
je 0x46c0bd
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push ecx
call esi
mov eax, 1
jmp 0x46cad4
cmp ecx, 1
jne 0x46c144
mov esi, dword [eax + 0xc]
sar esi, 1
and esi, 0x1fffffff
lea edi, [esi + esi*4]
lea eax, [edi + 1]
push eax
lea ecx, [esp + 0x30]
call fcn.004460b0
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
push 0
push 0
push edi
push ebx
push esi
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ebp, eax
test ebp, ebp
jge 0x46c10b
xor ebp, ebp
jmp 0x46c111
cmp ebp, edi
jle 0x46c111
mov ebp, edi
lea eax, [ebp + 1]
cdq
sub eax, edx
mov esi, eax
sar esi, 1
lea edx, [esi + 1]
push edx
lea ecx, [esp + 0x30]
mov byte [ebx + ebp], 0
call fcn.004462b0
mov eax, dword [esp + 0x2c]
mov word [eax + esi*2], 0
mov byte [esp + 0x2b], 1
mov dword [esp + 0x20], eax
jmp 0x46bfc9
cmp ecx, 2
jne 0x46c1a1
mov esi, dword [eax + 0xc]
and esi, 0x3fffffff
lea eax, [esi + 1]
push eax
lea ecx, [esp + 0x30]
call fcn.004462b0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
push esi
push ecx
push esi
push edx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
cmp esi, ebx
jge 0x46c17b
xor esi, esi
lea eax, [esi + 1]
push eax
lea ecx, [esp + 0x30]
call fcn.004462b0
mov eax, dword [esp + 0x2c]
lea ebp, [esi + esi]
mov word [eax + ebp], bx
mov byte [esp + 0x2b], 1
mov dword [esp + 0x20], eax
jmp 0x46bfc9
cmp ecx, 0x20
jne 0x46c1c6
mov ecx, dword [esi]
add eax, 0xc
mov dword [esp + 0x20], ecx
mov ebp, dword [eax]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x88], eax
mov byte [esp + 0x2b], 1
jmp 0x46bfc3
lea ecx, [esp + 0x2c]
call fcn.0043f290
lea ecx, [esp + 0x14]
call fcn.0043f290
lea ecx, [esp + 0x7c]
call fcn.004151a3
jmp 0x46c6f6
mov al, byte [esp + 0x13]
test al, al
mov eax, dword [esp + 0x20]
je 0x46c217
cmp word [eax], 0
je 0x46c244
mov ecx, dword [esp + 0x68]
or cl, byte [esp + 0x13]
push ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.004574e0
push eax
mov ecx, edi
call fcn.0046afa0
mov dword [esp + 0x20], eax
cmp word [eax], 0
je 0x46c244
mov eax, dword [esp + 0x1b4]
lea edx, [esp + 0x4c]
push edx
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.0045e7d0
mov eax, dword [esp + 0x30]
mov ebp, dword [esp + 0x5c]
add esp, 0x10
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
cmp eax, edx
sete byte [esp + 0x2b]
test ecx, ecx
je 0x46c515
xor ebx, ebx
push 2
mov dword [esp + 0x5c], eax
mov dword [esp + 0x20], ebx
call fcn.00445f00
add esp, 4
cmp eax, ebx
mov dword [esp + 0x1c], eax
je 0x46c27a
mov word [eax], bx
push 0x2c
push 0x3a
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x64]
push ecx
mov ecx, dword [esp + 0x88]
mov byte [esp + 0x1b4], 6
call fcn.0043b730
mov eax, dword [esp + 0x1c]
cmp word [eax], bx
jne 0x46c331
mov edx, dword [0x51927c]
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
add eax, 0xfffffff8
push eax
push ebx
push edx
call esi
mov eax, dword [esp + 0x2c]
cmp eax, ebx
mov dword [esp + 0x1c], ebx
je 0x46c2d6
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push ebx
push eax
call esi
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x46c2ec
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push ecx
call esi
push 0x5194ec
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0x46c311
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push edx
call esi
mov eax, dword [esp + 0x3c]
cmp eax, ebx
mov dword [esp + 0x24], ebx
je 0x46cad2
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push ebx
push eax
jmp 0x46cad0
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x5c]
push edx
mov dword [esp + 0x54], ebx
call fcn.00449a90
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x48]
add esp, 8
push 0xffffffffffffffff
push eax
push ecx
mov ecx, dword [esp + 0x50]
mov word [esp + 0x108], bx
call fcn.0041e533
cmp eax, ebx
mov ebp, 1
je 0x46c46f
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov edi, dword [eax + 0xc]
lea esi, [edx + ecx]
cmp edi, esi
jl 0x46c46f
mov esi, dword [eax + 4]
mov eax, dword [esp + 0x74]
add esi, edx
mov edx, ecx
shr ecx, 2
lea edi, [esp + 0x8c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
xor ebp, ebp
cmp eax, ebx
rep movsb byte es:[edi], byte [esi]
je 0x46c3d0
fld dword [esp + 0x8c]
sub esp, 8
fstp qword [esp]
lea eax, [esp + 0x104]
push 0x4f5d44
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
jmp 0x46c46c
cmp dword [esp + 0x80], ebx
je 0x46c3fb
fld qword [esp + 0x8c]
sub esp, 8
fstp qword [esp]
lea ecx, [esp + 0x104]
push 0x4f5d3c
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
jmp 0x46c46c
cmp dword [esp + 0x5c], ebx
je 0x46c423
fld qword [esp + 0x8c]
sub esp, 8
fstp qword [esp]
lea edx, [esp + 0x104]
push 0x4f5d3c
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
jmp 0x46c46c
cmp dword [esp + 0x34], 0x64
jne 0x46c44a
mov eax, dword [esp + 0x8c]
push eax
lea ecx, [esp + 0x100]
push str.0x_p
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
jmp 0x46c46f
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x8c]
push edx
push eax
push ecx
lea edx, [esp + 0x108]
push edx
call fcn.004458c0
add esp, 0x10
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0xfc]
push eax
push ecx
mov ecx, dword [esp + 0x4c]
call fcn.00444550
mov eax, dword [esp + 0x1c]
cmp eax, ebx
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
je 0x46c4a1
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push edx
call esi
mov eax, dword [esp + 0x2c]
cmp eax, ebx
mov dword [esp + 0x1c], ebx
je 0x46c4ba
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push ebx
push eax
call esi
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x46c4d0
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push ecx
call esi
push 0x5194ec
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0x46c4f5
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push ebx
push edx
call esi
mov eax, dword [esp + 0x3c]
cmp eax, ebx
mov dword [esp + 0x24], ebx
je 0x46c50e
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push ebx
push eax
call esi
mov eax, ebp
jmp 0x46cad4
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x46c70d
fld qword [0x4f30b8]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x74]
fstp qword [esp + 0x6c]
test eax, eax
je 0x46c553
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.004497e0
fld qword [esp + 0x74]
fstp dword [esp + 0x94]
jmp 0x46c5b0
mov eax, dword [esp + 0x80]
test eax, eax
je 0x46c57a
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.004497e0
fld qword [esp + 0x74]
fstp qword [esp + 0x94]
jmp 0x46c5b0
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x46c59e
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0x20]
push eax
call fcn.004497e0
fld qword [esp + 0x74]
fstp qword [esp + 0x94]
jmp 0x46c5b0
lea ecx, [esp + 0x8c]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00449a60
mov eax, dword [esp + 0x24]
add esp, 8
cmp word [eax], 0
mov dword [esp + 0x5c], 0
je 0x46c5e0
lea ecx, [esp + 0x5c]
mov esi, eax
push ecx
lea edx, [esp + 0x20]
add esi, 2
push edx
mov dword [esp + 0x24], esi
call fcn.00449a90
add esp, 8
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x44]
lea edi, [eax + ecx]
mov eax, dword [esp + 0x40]
push 0xffffffffffffffff
push edx
push eax
mov ecx, esi
mov dword [esp + 0x58], edi
call fcn.0041e533
mov ebp, eax
test ebp, ebp
jne 0x46c65f
mov ecx, dword [esp + 0x40]
push eax
push 0xffffffffffffffff
push 0x4ebd38
push ecx
mov ecx, esi
call fcn.0041e465
mov ebp, eax
test ebp, ebp
jne 0x46c65f
lea ecx, [esp + 0x2c]
call fcn.0043f290
lea ecx, [esp + 0x14]
call fcn.0043f290
push 0x5194ec
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [esp + 0x24]
call fcn.0043f290
lea ecx, [esp + 0x3c]
call fcn.0043f290
mov eax, 1
jmp 0x46cad4
sub edi, dword [ebp + 0xc]
test edi, edi
jle 0x46c6b7
mov eax, dword [esp + 0x4c]
inc eax
cdq
sub eax, edx
mov esi, eax
sar esi, 1
lea edx, [esi + 2]
lea ebx, [ebp + 4]
push edx
mov ecx, ebx
call fcn.004462b0
mov edx, dword [ebx]
mov ecx, edi
mov edi, dword [ebp + 0xc]
add edi, edx
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebx]
mov word [eax + esi*2 + 2], 0
mov ecx, dword [ebx]
mov eax, dword [esp + 0x4c]
mov word [ecx + esi*2], 0
mov edx, dword [ebx]
mov byte [eax + edx], 0
mov dword [ebp + 0xc], eax
mov edi, dword [ebp + 4]
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x5c]
mov eax, ecx
shr ecx, 2
add edi, ebp
lea esi, [esp + 0x8c]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2c]
call fcn.0043f290
lea ecx, [esp + 0x14]
call fcn.0043f290
push 0x5194ec
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [esp + 0x24]
call fcn.0043f290
lea ecx, [esp + 0x3c]
call fcn.0043f290
jmp 0x46cad2
mov al, byte [esp + 0x32]
test al, al
je 0x46c866
test ebp, ebp
jle 0x46c6d9
lea ecx, [esp + 0x64]
call fcn.0041518e
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
push 0xffffffffffffffff
push ecx
mov ecx, dword [esp + 0x4c]
push edx
mov byte [esp + 0x1b0], 7
call fcn.0041e533
test eax, eax
mov dword [esp + 0x68], eax
jne 0x46c761
lea ecx, [esp + 0x64]
mov byte [esp + 0x1a4], 4
call fcn.004151a3
jmp 0x46bfc9
mov esi, dword [esp + 0x68]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 4]
mov ebx, eax
add esi, 4
and ebx, 0x3fffffff
test eax, eax
setl al
test al, al
mov dword [esp + 0x4c], ecx
mov byte [esp + 0x33], al
je 0x46c78d
mov dword [esi], 0
lea eax, [ebx + ebp]
mov dword [esp + 0x7c], eax
cdq
sub eax, edx
mov edi, eax
sar edi, 1
lea edx, [edi + 2]
push edx
mov ecx, esi
call fcn.004462b0
mov eax, dword [esi]
mov word [eax + edi*2 + 2], 0
mov ecx, dword [esi]
mov al, byte [esp + 0x32]
cmp al, 1
mov word [ecx + edi*2], 0
mov edx, dword [esi]
mov dword [esp + 0x48], edx
jne 0x46c7fb
mov al, byte [esp + 0x33]
test al, al
je 0x46c7e3
mov esi, dword [esp + 0x4c]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x20]
mov ecx, ebp
mov eax, ecx
shr ecx, 2
lea edi, [edx + ebx]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
jmp 0x46c848
cmp al, 2
jne 0x46c84d
mov al, byte [esp + 0x33]
test al, al
je 0x46c824
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
lea edi, [edx + ebp]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x46c835
mov eax, dword [esp + 0x48]
push ebx
push eax
add eax, ebp
push eax
call fcn.004aee50
add esp, 0xc
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x48]
mov ecx, ebp
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0xc], eax
lea ecx, [esp + 0x64]
call fcn.004151a3
jmp 0x46ca60
mov al, byte [esp + 0x3b]
test al, al
je 0x46bfc9
test bl, bl
jne 0x46bfc9
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
push 0xffffffffffffffff
push edx
push eax
call fcn.0041e533
mov esi, eax
test esi, esi
je 0x46ca60
cmp dword [esi + 0xc], 0xfffff000
jge 0x46c8af
mov ecx, dword [esi + 4]
mov word [ecx], 0
jmp 0x46ca60
push 0x4ebd38
lea ecx, [esi + 4]
call fcn.004574e0
mov dword [esi + 0xc], 0
jmp 0x46ca60
mov eax, dword [esp + 0x48]
test eax, eax
jl 0x46c97c
mov ecx, dword [esi + 0xc]
mov edi, dword [esi + 4]
mov bl, al
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov bh, bl
and ecx, 0x3fffffff
mov edx, ecx
shr ecx, 2
mov eax, ebx
shl eax, 0x10
mov ax, bx
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x46c916
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push 0
push eax
call esi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x46c92d
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push ecx
call esi
push 0x5194ec
mov dword [esp + 0x18], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x46c957
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push edx
call esi
mov eax, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0x24], 0
je 0x46cad2
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push 0
push eax
jmp 0x46cad0
mov al, byte [esp + 0x3b]
test al, al
je 0x46ca0b
mov eax, dword [esp + 0x2c]
test eax, eax
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
je 0x46c9a5
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push ecx
call esi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x46c9bc
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push edx
call esi
push 0x5194ec
mov dword [esp + 0x18], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x46c9e5
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push 0
push eax
call esi
mov eax, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0x24], 0
je 0x46cad2
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push 0
push ecx
jmp 0x46cad0
test edi, edi
je 0x46ca1f
cmp dword [edi + 0xc], 0xfffff000
jge 0x46ca1f
mov dword [edi + 4], 0
mov al, byte [esp + 0x2b]
test al, al
je 0x46ca46
mov edx, dword [esi + 0xc]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x6c]
mov dword [eax], edx
mov edx, dword [esi + 4]
mov eax, dword [ecx]
mov dword [ecx], edx
mov dword [esi + 4], eax
mov dword [esi + 0xc], ebp
jmp 0x46ca60
test edi, edi
je 0x46ca60
mov eax, dword [esp + 0x20]
push ebp
push eax
lea ecx, [esi + 0xc]
push ecx
add esi, 4
push esi
call fcn.00448620
add esp, 0x10
mov eax, dword [esp + 0x2c]
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
xor edi, edi
cmp eax, edi
je 0x46ca7e
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push edi
push edx
call esi
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x46ca93
add eax, 0xfffffff8
push eax
mov eax, dword [0x51927c]
push edi
push eax
call esi
push 0x5194ec
mov dword [esp + 0x18], edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x46cab8
mov ecx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push edi
push ecx
call esi
mov eax, dword [esp + 0x3c]
cmp eax, edi
mov dword [esp + 0x24], edi
je 0x46cad2
mov edx, dword [0x51927c]
add eax, 0xfffffff8
push eax
push edi
push edx
call esi
xor eax, eax
mov ecx, dword [esp + 0x19c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x198
ret 0x10