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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x41c
xor eax, eax
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
xor ebx, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x50], eax
mov eax, 0x800
or word [esi + 0x312], ax
mov eax, dword [esi]
push edi
mov edi, 2
mov dword [esp + 0x64], esi
mov dword [esp + 0x38], edi
mov ecx, dword [eax + 0x2c]
test ecx, ecx
je 0x447430
mov eax, dword [esi + 0x168]
test eax, eax
je 0x446989
cmp dword [eax], ebx
jne 0x447430
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x5c]
push eax
push esi
call ecx
add esp, 0xc
mov dword [esp + 0x3c], eax
cmp eax, 1
jne 0x447430
mov eax, dword [esi]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x1c], eax
test eax, eax
je 0x446f7d
test ecx, ecx
je 0x446f7d
cmp dword [ecx + 0x90], ebx
je 0x446f7d
add eax, 0x1c
mov ecx, eax
mov dword [esp + 0x30], eax
call fcn.0043d870
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
push dword [eax + 0x54]
mov edx, dword [edx + 0x90]
lea ecx, [eax + 0x1c]
push 0
mov edx, dword [edx + 8]
call fcn.0043d760
add esp, 8
test eax, eax
jne 0x446f7d
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x90]
push dword [eax + 8]
push dword [eax]
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
push dword [eax]
call fcn.0046ae20
mov eax, dword [esp + 0x40]
add esp, 0xc
mov ecx, dword [eax + 0x84]
cmp ecx, 0x285
jg 0x446a60
je 0x446a68
cmp ecx, 0x100
je 0x446a4a
cmp ecx, 0x206
jne 0x446a70
mov ecx, dword [esp + 0x1c]
or byte [ecx + 0x5a], 8
mov eax, dword [eax + 0x8c]
mov dword [ecx + 0xcc], eax
jmp 0x446a70
cmp ecx, 0x28e
jne 0x446a70
mov eax, dword [esp + 0x1c]
or byte [eax + 0x5a], 4
mov eax, dword [esi]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x34], eax
test eax, eax
je 0x446f7d
test ecx, ecx
je 0x446f7d
mov eax, dword [ecx + 4]
sub eax, 0x10
je 0x446cf6
sub eax, 1
je 0x446f2f
sub eax, 1
jne 0x446f7d
mov edx, dword [ecx + 0x20]
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], ebx
test edx, edx
je 0x446f7d
mov eax, dword [edx + 0xc]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x446f7d
mov ecx, dword [eax]
cmp ecx, edi
je 0x446b45
cmp ecx, 3
je 0x446b45
cmp ecx, 1
jne 0x446f7d
mov ecx, eax
call fcn.00437cb0
mov dword [esp + 0x28], eax
test eax, eax
jle 0x446f7d
mov ecx, dword [esp + 0x18]
mov edx, eax
mov ecx, dword [ecx + 0x14]
call fcn.004439e0
mov ecx, eax
mov dword [esp + 0x30], ecx
test ecx, ecx
je 0x446f7d
mov eax, dword [esp + 0x18]
sub esp, 8
mov edx, dword [esp + 0x24]
push dword [esp + 0x30]
mov dword [eax + 0x14], ecx
call fcn.00437b30
add esp, 0xc
mov dword [esp + 0x28], eax
test eax, eax
jns 0x446f28
mov ecx, dword [esp + 0x30]
call fcn.004439c0
jmp 0x446f7d
cmp word [edx + 0x16], bx
je 0x446bdc
push ecx
lea ecx, [esp + 0x2c]
xor edx, edx
push ecx
mov ecx, eax
call fcn.0043f520
add esp, 8
cmp eax, 0xffffff36
jne 0x446f7d
mov ecx, dword [esp + 0x28]
call fcn.004439a0
mov dword [esp + 0x20], eax
test eax, eax
je 0x446f7d
push ecx
lea ecx, [esp + 0x2c]
mov edx, eax
push ecx
mov ecx, dword [esp + 0x24]
call fcn.0043f520
add esp, 8
test eax, eax
js 0x446bce
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x446baf
mov ecx, eax
call fcn.004439c0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x30]
mov ax, word [eax + 0x16]
mov word [ecx + 0x5c], ax
jmp 0x446f2f
mov ecx, dword [esp + 0x20]
call fcn.004439c0
jmp 0x446f7d
cmp ecx, 3
jne 0x446c7f
lea ecx, [esp + 0x6c]
mov dword [esp + 0x84], ebx
mov dword [esp + 0x40], ecx
lea edx, [esp + 0x40]
xorps xmm0, xmm0
mov dword [esp + 0x8c], 6
lea ecx, [esp + 0x98]
movlpd qword [esp + 0x6c], xmm0
mov dword [esp + 0x88], ecx
mov ecx, dword [eax + 0x10]
push 0x3f
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0x80], xmm0
movlpd qword [esp + 0x94], xmm0
call fcn.0042c370
mov ecx, eax
add esp, 4
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], ecx
test ecx, ecx
jne 0x446c66
push 0
push ecx
mov ecx, dword [esp + 0x24]
mov edx, eax
call fcn.0042fdb0
mov dword [esp + 0x28], eax
add esp, 8
mov eax, dword [esp + 0x40]
test eax, eax
je 0x446c71
mov ecx, eax
call fcn.0042c160
cmp dword [esp + 0x20], ebx
jne 0x446f7d
mov eax, dword [esp + 0x1c]
mov ecx, eax
call fcn.0043f4f0
mov dword [esp + 0x28], eax
test eax, eax
jle 0x446f7d
mov ecx, eax
call fcn.004439a0
mov ecx, eax
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x446f7d
mov eax, dword [esp + 0x28]
mov edx, ecx
push 1
mov dword [esp + 0x54], eax
lea eax, [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x24]
push eax
call fcn.0043f130
add esp, 0xc
test eax, eax
js 0x446bce
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x446ce3
mov ecx, eax
call fcn.004439c0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x14], eax
jmp 0x446f2f
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], eax
test eax, eax
je 0x446f7d
mov eax, dword [eax + 0x24]
mov dword [esp + 0x50], eax
test eax, eax
je 0x446f7d
cmp dword [eax + 0x2088], 1
jne 0x446d71
push 0
xor edx, edx
mov ecx, eax
call fcn.0043e620
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jle 0x446f7d
mov ecx, dword [esp + 0x20]
lea edi, [eax + 0x2b]
xor edx, edx
mov dword [esp + 0x1c], edi
movzx ecx, word [ecx + 0x30]
test cx, cx
cmove edx, eax
xor edi, edi
test cx, cx
mov ecx, dword [esp + 0x1c]
cmove ecx, edi
mov edi, 2
mov dword [esp + 0x1c], ecx
test edx, edx
js 0x446f7d
jmp 0x446d8c
push ecx
push 0
mov edx, eax
xor ecx, ecx
call fcn.0043e3a0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jle 0x446f7d
mov edx, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x14]
call fcn.004439e0
mov edx, eax
mov dword [esp + 0x24], edx
test edx, edx
je 0x446f7d
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x50]
mov dword [eax + 0x14], edx
cmp dword [ecx + 0x2088], 1
mov eax, dword [esp + 0x14]
jne 0x446f0c
push eax
call fcn.0043e620
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
jle 0x446f22
mov ecx, dword [esp + 0x20]
cmp word [ecx + 0x30], bx
je 0x446f28
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x14], ecx
call fcn.004439a0
mov dword [esp + 0x2c], eax
test eax, eax
je 0x446f05
mov eax, dword [esp + 0x28]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x50], ebx
lea ecx, [eax + 0x2b]
cmp dword [esp + 0x1c], ecx
jae 0x446e22
mov dword [esp + 0x28], 0xffffff7c
jmp 0x446eeb
lea ecx, [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x44]
push eax
call fcn.00436480
add esp, 8
test eax, eax
js 0x446e49
mov dword [esp + 0x28], 0xffffff74
jmp 0x446eeb
mov edi, dword [esp + 0x2c]
lea eax, [edi + 6]
test eax, eax
jne 0x446e60
mov ebx, 0xffffff53
mov esi, 0xffffff59
jmp 0x446e72
mov word [eax], 0x102
mov esi, 9
mov byte [eax + 2], bl
mov ebx, 3
push 0
push 2
lea edx, [esi + edi]
mov ecx, 0x285
call fcn.00439600
mov ecx, dword [esp + 0x30]
add esi, eax
add ebx, eax
lea edx, [edi + esi]
call fcn.00439580
mov edi, eax
lea ecx, [edi + esi]
mov esi, dword [esp + 0x30]
push esi
push dword [esp + 0x30]
mov dword [esp + 0x50], ecx
add ecx, dword [esp + 0x3c]
push ecx
call fcn.0046ae20
lea eax, [edi + esi]
add esp, 0x14
mov edi, dword [esp + 0x2c]
add ebx, eax
mov edx, edi
mov ecx, ebx
call fcn.00439500
mov esi, eax
lea eax, [edi + 6]
push ebx
push eax
lea edx, [esi + edi]
push edx
call fcn.0046ae20
lea eax, [esi + ebx]
add esp, 0xc
mov esi, dword [esp + 0x64]
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], eax
lea edi, [ebx + 2]
mov ecx, dword [esp + 0x24]
call fcn.004439c0
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
mov dword [eax + 0x14], edx
mov eax, dword [esp + 0x28]
jmp 0x446f20
mov eax, 0xffffff83
jmp 0x446f20
push ecx
mov edx, ecx
mov ecx, dword [esp + 0x28]
push eax
call fcn.0043e3a0
add esp, 8
test eax, eax
jg 0x446f28
test eax, eax
js 0x446f7d
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0xc], eax
mov edx, dword [ecx + 0x14]
test edx, edx
je 0x446f7d
mov eax, dword [esp + 0x34]
mov al, byte [eax + 0x59]
not al
shr eax, 1
and eax, 1
push eax
push 0
push 0
push 0
push 1
push 2
push dword [ecx + 0xc]
mov ecx, dword [esp + 0x50]
call fcn.0040a4f0
add esp, 0x1c
cmp eax, 1
jne 0x446f7d
mov ax, word [esi + 0x30c]
mov ecx, 0xfff7
and ax, cx
or ax, 4
mov word [esi + 0x30c], ax
mov edx, dword [esp + 0x58]
mov dword [esp + 0x10], edx
test edx, edx
je 0x4472a2
cmp byte [edx + 0x98], 0
je 0x4472a2
or ecx, 0xffffffff
lea eax, [edx + 0x9c]
lock xadd dword [eax], ecx
cmp ecx, 1
jne 0x4472a2
lea ecx, [edx + 0x264]
call fcn.00413180
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + 0x738]
call fcn.00413180
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x7c]
test ecx, ecx
je 0x446ff6
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x446fe3
call eax
jmp 0x446fe8
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [eax + 0x7c], 0
lea ecx, [eax + 0x90]
mov dword [esp + 0x30], ecx
test ecx, ecx
je 0x44705c
mov edx, dword [ecx]
test edx, edx
je 0x44705c
cmp dword [edx + 0xc], 1
jne 0x44702b
mov eax, dword [edx]
test eax, eax
je 0x44702b
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x44702b
nop dword [eax]
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x447020
mov eax, dword [0x4a3918]
mov dword [edx], 0
mov dword [edx + 8], 0
push edx
test eax, eax
je 0x447046
call eax
jmp 0x44704b
call fcn.00471b58
mov eax, dword [esp + 0x34]
add esp, 4
mov dword [eax], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x6c]
test ecx, ecx
je 0x44707d
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x447071
call eax
jmp 0x447076
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov ecx, dword [eax + 0xa4]
mov dword [eax + 0x6c], 0
test ecx, ecx
je 0x4470b7
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x4470a6
call eax
mov eax, dword [esp + 0x14]
lea ecx, [eax + 0xa0]
jmp 0x4470e6
call fcn.00471b58
mov eax, dword [esp + 0x14]
lea ecx, [eax + 0xa0]
jmp 0x4470e6
mov edx, dword [eax + 0xa0]
lea ecx, [eax + 0xa0]
mov dword [esp + 0x20], ecx
test edx, edx
je 0x4470e9
mov eax, dword [0x4a3918]
push edx
test eax, eax
je 0x4470d9
call eax
jmp 0x4470de
call fcn.00471b58
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
add esp, 4
mov dword [ecx], 0
mov ecx, dword [eax + 0xa8]
mov dword [eax + 0xa4], 0
test ecx, ecx
je 0x44711d
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x447111
call eax
jmp 0x447116
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov ecx, dword [eax + 0xb8]
mov dword [eax + 0xa8], 0
test ecx, ecx
je 0x447155
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x44713f
call eax
jmp 0x447144
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [eax + 0xb8], 0
mov ecx, dword [eax + 0xb0]
test ecx, ecx
je 0x447183
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x44716d
call eax
jmp 0x447172
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [eax + 0xb0], 0
mov ecx, dword [eax + 0xb4]
test ecx, ecx
je 0x4471b1
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x44719b
call eax
jmp 0x4471a0
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [eax + 0xb4], 0
mov ecx, dword [eax + 0xbc]
test ecx, ecx
je 0x4471d5
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x4471c9
call eax
jmp 0x4471ce
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x4471e7
xor edx, edx
call fcn.0040d800
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x4471f9
xor edx, edx
call fcn.0040d800
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x447246
test byte [ecx + 0x20], 1
je 0x44722c
mov eax, dword [ecx + 0x18]
test eax, eax
je 0x44722c
mov ecx, dword [0x4a3918]
push eax
test ecx, ecx
je 0x447220
call ecx
jmp 0x447225
call fcn.00471b58
mov ecx, dword [esp + 0x24]
add esp, 4
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x44723a
call eax
jmp 0x44723f
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov ecx, dword [eax + 0xac]
test ecx, ecx
je 0x447274
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x44725e
call eax
jmp 0x447263
call fcn.00471b58
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [eax + 0xac], 0
mov ecx, dword [eax + 0x78]
test ecx, ecx
je 0x44728b
call fcn.004377c0
mov eax, dword [esp + 0x10]
mov dword [eax + 0x78], 0
mov ecx, dword [0x4a3918]
push eax
test ecx, ecx
je 0x44729a
call ecx
jmp 0x44729f
call fcn.00471b58
add esp, 4
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x14], ecx
test ecx, ecx
je 0x447430
lea eax, [ecx + 0x10]
or edx, 0xffffffff
lock xadd dword [eax], edx
cmp edx, 1
jne 0x447430
add ecx, 0x28
call fcn.0045ea60
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x4472f9
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x4472e6
call eax
jmp 0x4472eb
call fcn.00471b58
mov eax, dword [esp + 0x18]
add esp, 4
mov dword [eax + 0x14], 0
mov ecx, dword [eax + 4]
cmp ecx, 0x12
jg 0x447393
je 0x447369
sub ecx, 0x10
je 0x44733f
sub ecx, 1
jne 0x447419
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x447419
test byte [eax + 0x5e], 4
je 0x447419
call fcn.00408760
mov eax, dword [esp + 0x14]
mov dword [eax + 0x1c], 0
jmp 0x447419
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x447419
test byte [eax + 0x5e], 8
je 0x447419
call fcn.00408440
mov eax, dword [esp + 0x14]
mov dword [eax + 0x18], 0
jmp 0x447419
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x447419
test byte [eax + 0x5e], 2
je 0x447419
call fcn.00408c60
mov eax, dword [esp + 0x14]
mov dword [eax + 0x20], 0
jmp 0x447419
cmp ecx, 0x1c
je 0x4473fc
cmp ecx, 0x40c
jne 0x447419
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je 0x4473b7
call fcn.004439c0
mov eax, dword [esp + 0x14]
mov dword [eax + 0x3c], 0
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x4473ce
call fcn.004439c0
mov eax, dword [esp + 0x14]
mov dword [eax + 0x44], 0
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je 0x4473e5
call fcn.004439c0
mov eax, dword [esp + 0x14]
mov dword [eax + 0x4c], 0
mov dword [eax + 0x40], 0
mov dword [eax + 0x48], 0
mov dword [eax + 0x50], 0
jmp 0x447419
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x447419
test byte [eax + 0x5e], 1
je 0x447419
call fcn.00408920
mov eax, dword [esp + 0x14]
mov dword [eax + 0x24], 0
mov ecx, dword [0x4a3918]
push eax
test ecx, ecx
je 0x447428
call ecx
jmp 0x44742d
call fcn.00471b58
add esp, 4
mov al, byte [esi + 0x30c]
and al, 0xc
cmp al, 8
jne 0x447460
xor ecx, ecx
mov dword [esp + 0x20], 4
mov edx, 4
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ecx
jmp 0x44756d
mov eax, dword [esi + 0x168]
test eax, eax
jne 0x447476
mov eax, 0xfffffeb8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [eax + 8]
mov dl, 0xb
mov dword [esp + 0x14], eax
mov ecx, esi
lea eax, [esp + 0x48]
mov dword [esp + 0x20], 7
push eax
call fcn.004068c0
add esp, 4
mov dword [esp + 0x3c], eax
test eax, eax
js 0x4479ec
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x4c], ecx
cmp cx, 2
jbe 0x44750f
cmp dword [esi + 0x184], 0
jne 0x44750f
push dword [esi + 0x88]
movzx edx, cx
lea ecx, [esi + 0x184]
push 0
call fcn.0043d760
add esp, 8
test eax, eax
js 0x4479ec
mov edx, dword [esi + 0x184]
lea eax, [esp + 0x48]
push eax
push 0xb
mov ecx, esi
mov dword [esp + 0x50], 0
mov edx, dword [edx]
call fcn.00406a50
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
js 0x4479ec
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x4c], ecx
movzx eax, cx
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 7]
add edx, eax
add eax, 3
add eax, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
test ecx, ecx
je 0x447565
mov ecx, dword [esi + 0x180]
test ecx, ecx
jle 0x447561
mov eax, dword [esi + 0x17c]
mov edi, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x54], edi
mov edi, 2
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x14]
add edx, eax
mov dword [esp + 0x34], eax
add dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
jmp 0x44756d
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x34], 0
mov eax, dword [esi + 0x1c0]
mov dword [esp + 0x68], edx
test eax, eax
je 0x44758a
add eax, dword [esp + 0x20]
mov edi, 2
sub edx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x3c]
test edx, edx
je 0x4479ba
test eax, eax
jne 0x4479ba
mov dword [esp + 0x2c], 5
cmp dword [esi + 0x1c0], eax
jne 0x4475d6
mov eax, dword [esp + 0x4c]
movzx eax, ax
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0x2c], 9
mov ecx, 0x3ffc
cmp eax, ecx
cmovbe ecx, eax
lea eax, [ecx + 0x6f]
jmp 0x4475e3
mov ecx, 0x4000
cmp edx, ecx
cmovb ecx, edx
lea eax, [ecx + 0x6b]
mov dword [esp + 0x10], ecx
mov edx, eax
mov ecx, esi
mov dword [esp + 0x30], eax
call fcn.00416d10
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x4479ec
mov edx, dword [esi + 0x10c]
add edx, dword [esi + 0x104]
add edx, dword [esi + 0x108]
mov ecx, dword [esi + 0x1c0]
mov dword [esp + 0x24], edx
mov byte [edx], 0x16
mov al, byte [esi + 0x1d6]
mov byte [edx + 1], al
mov byte [edx + 2], 3
test ecx, ecx
jne 0x4476f0
mov ecx, dword [esp + 0x10]
mov edi, edx
add ecx, 4
sub dword [esp + 0x18], 4
mov eax, ecx
shr eax, 8
mov byte [edi + 3], al
mov eax, edx
mov byte [eax + 4], cl
mov ecx, edx
mov edx, dword [esp + 0x68]
mov eax, edx
shr eax, 0x10
mov byte [ecx + 6], al
mov eax, edx
shr eax, 8
mov byte [ecx + 7], al
mov eax, edi
mov byte [ecx + 8], dl
mov edx, dword [esp + 0x1c]
mov byte [ecx + 5], 0xb
mov ecx, dword [esp + 0x2c]
mov byte [ecx + eax], 0
mov eax, dword [esp + 0x1c]
shr eax, 0x10
mov byte [ecx + edi + 1], al
mov eax, dword [esp + 0x1c]
shr eax, 8
mov byte [ecx + edi + 2], al
mov eax, edi
mov edi, dword [esp + 0x38]
mov byte [ecx + eax + 3], dl
add ecx, 4
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
sub edx, 4
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], edx
test eax, eax
je 0x4477e1
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
sub dword [esp + 0x18], 3
shr eax, 0x10
mov byte [ecx + edi], al
mov eax, dword [esp + 0x14]
shr eax, 8
mov byte [ecx + edi + 1], al
mov eax, edi
mov byte [ecx + eax + 2], dl
add ecx, 3
mov edx, dword [esp + 0x10]
sub edx, 3
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], edx
jmp 0x447713
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov eax, edx
shr eax, 8
mov byte [ecx + 3], al
mov eax, dword [esp + 0x14]
mov byte [ecx + 4], dl
mov ecx, dword [esp + 0x2c]
test eax, eax
je 0x4477e1
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x38]
movzx eax, ax
add eax, dword [esp + 0x14]
mov dword [esp + 0x44], eax
cmp dword [esi + 0x1c0], eax
jae 0x4477e1
mov eax, dword [esp + 0x24]
add eax, ecx
mov ecx, esi
push eax
push edx
push dword [esi + 0x1c0]
mov edx, dword [esi + 0x168]
push dword [esp + 0x58]
push dword [esp + 0x24]
mov edx, dword [edx]
call fcn.00446870
mov edx, dword [esp + 0x24]
add esp, 0x14
add dword [esp + 0x2c], eax
sub edx, eax
add dword [esi + 0x1c0], eax
sub dword [esp + 0x18], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], edx
cmp dword [esi + 0x1c0], eax
jne 0x4477e5
lea eax, [esi + 0x184]
test eax, eax
je 0x4477e5
mov ecx, dword [eax]
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x4477e5
cmp dword [ecx + 0xc], 1
jne 0x4477b4
mov eax, dword [ecx]
test eax, eax
je 0x4477b4
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x4477b0
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x4477a5
mov ecx, dword [esp + 0x44]
mov eax, dword [0x4a3918]
mov dword [ecx], 0
mov dword [ecx + 8], 0
push ecx
test eax, eax
je 0x4477cf
call eax
jmp 0x4477d4
call fcn.00471b58
add esp, 4
mov dword [esi + 0x184], 0
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x34], 0
jbe 0x4478ce
test edx, edx
je 0x4478ce
lea eax, [ebx + 2]
cmp edi, eax
jne 0x447848
mov ecx, dword [esi + 0x17c]
xor edi, edi
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x38], edi
mov eax, dword [ecx]
add eax, ebx
mov dword [esp + 0x54], eax
cmp ebx, dword [ecx + 8]
je 0x4478cc
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
mov eax, dword [esp + 0x54]
shl ebx, 8
movzx eax, byte [eax + 2]
or ebx, eax
add ebx, 3
add dword [esp + 0x60], ebx
test ebx, ebx
je 0x4478ce
mov ecx, dword [esp + 0x38]
mov edi, ebx
sub edi, ecx
xor eax, eax
cmp edi, edx
cmovae edi, edx
cmp ecx, ebx
jae 0x44787e
mov eax, dword [esp + 0x54]
add eax, ecx
push edi
push eax
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x2c]
push eax
call fcn.0046ae20
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov eax, edi
cmp edi, edx
je 0x4478a4
mov edi, dword [esp + 0x38]
mov ecx, ebx
sub ecx, eax
sub ecx, edi
add ecx, 2
cmp ecx, edx
ja 0x4478a8
mov ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x64]
mov word [eax + ecx], 0
add eax, 2
mov edi, dword [esp + 0x38]
add dword [esp + 0x2c], eax
sub edx, eax
add dword [esi + 0x1c0], eax
add edi, eax
sub dword [esp + 0x18], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x38], edi
test edx, edx
jne 0x4477f8
jmp 0x4478ce
xor ebx, ebx
mov eax, dword [esp + 0x2c]
add eax, 0xfffffffb
js 0x4479fc
mov ecx, dword [esp + 0x24]
sub esp, 8
mov edx, ecx
push 1
push 0x16
push eax
lea eax, [ecx + 5]
mov ecx, esi
push eax
push dword [esp + 0x48]
call fcn.00444b50
mov ecx, eax
add esp, 0x1c
mov dword [esp + 0x44], ecx
test ecx, ecx
js 0x4479f3
cmp byte [esi + 0x3f9], 0
je 0x44797f
mov eax, dword [esi + 0x3f0]
mov dword [esp + 0x30], eax
test eax, eax
je 0x44797b
test ecx, ecx
jle 0x44797b
cmp byte [esi + 0x304], 1
je 0x44797b
push dword [esi + 0x3f4]
movzx eax, byte [esi + 0x1d6]
movzx edx, byte [esi + 0x1d7]
push esi
push ecx
push dword [esp + 0x30]
mov ecx, eax
and eax, 0xf
and ecx, 0xf0
shl ecx, 4
add ecx, eax
mov eax, edx
shl ecx, 4
and eax, 0xf0
add ecx, eax
and edx, 0xf
shl ecx, 4
push 0x16
add ecx, edx
push ecx
push 1
call dword [esp + 0x4c]
mov ecx, dword [esp + 0x60]
add esp, 0x1c
xor eax, eax
jmp 0x447983
mov eax, dword [esp + 0x3c]
add dword [esi + 0x108], ecx
mov ecx, 0xf7ff
and word [esi + 0x312], cx
mov ecx, 0x1000
test word [esi + 0x310], cx
jne 0x4479aa
mov ecx, esi
call fcn.00416a90
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
test edx, edx
jne 0x447596
cmp eax, 0xfffffeb9
je 0x4479ec
mov ecx, 0xf7ff
mov dword [esi + 0x1c0], 0
and word [esi + 0x312], cx
mov ecx, 0x300
test word [esi + 0x30c], cx
jne 0x4479ec
mov byte [esi + 0x319], 5
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0xffffff7c
pop ebx
mov esp, ebp
pop ebp
ret