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

Disassembly:
sub esp, 0x108
push ebx
push ebp
mov ebp, dword [esp + 0x118]
push esi
mov esi, dword [esp + 0x118]
push edi
mov edi, dword [esi + 0x72b0]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x124]
mov dword [esp + 0x80], edi
mov edi, dword [esi + 0x72b4]
mov dword [esp + 0x20], ecx
lea ecx, [eax + ebp]
mov eax, dword [esi + 0x7380]
mov dword [esp + 0x94], edi
mov edi, dword [esi + 0x72b8]
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 0x7370]
mov dword [esp + 0x8c], edi
mov edi, dword [esp + 0x128]
add eax, ecx
mov ebx, ebp
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x88], eax
test edi, edi
je 0x46e8f0
cmp edi, 4
mov dword [esp + 0x90], edi
jl 0x46d9a9
mov dword [esp + 0x90], 4
mov edi, dword [esp + 0x20]
mov dword [esi + 0x7304], 1
mov eax, dword [esi + 0x682c]
mov ecx, dword [esi + 0x6830]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x6834]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x80]
sub ebp, eax
mov dword [esp + 0x64], ecx
sub edi, edx
lea ecx, [esp + 0x28]
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], ebp
call fcn.0046f420
cmp eax, 0xffffff88
jbe 0x46da11
mov eax, 0xffffffec
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret
mov eax, dword [esp + 0x2c]
mov edi, dword [esi]
mov edx, dword [edi + 4]
lea ebx, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
and eax, dword [edx*4 + 0x6fa230]
mov dword [esp + 0x3c], eax
call fcn.0046f560
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
add edi, 8
mov dword [esp + 0x40], edi
mov edi, dword [esi + 8]
mov edx, dword [edi + 4]
lea ebx, [edx + ecx]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
and eax, dword [edx*4 + 0x6fa230]
mov dword [esp + 0x44], eax
call fcn.0046f560
mov eax, dword [esp + 0x2c]
mov esi, dword [esi + 4]
mov edx, dword [esi + 4]
add edi, 8
mov dword [esp + 0x48], edi
lea edi, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edi
and eax, dword [edx*4 + 0x6fa230]
mov dword [esp + 0x4c], eax
call fcn.0046f560
add esi, 8
mov dword [esp + 0x50], esi
mov dword [esp + 0x1c], 0
call fcn.0046f560
cmp eax, 2
jg 0x46de2d
lea ebp, [esp + 0xd8]
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x90]
jge 0x46de3e
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov ecx, dword [eax + edx*8]
mov ebx, dword [eax + edx*8 + 4]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov edx, dword [eax + esi*8]
mov eax, dword [eax + esi*8 + 4]
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov dword [esp + 0xc4], eax
mov eax, dword [esi + edi*8]
mov edi, dword [esi + edi*8 + 4]
mov dword [esp + 0x98], eax
mov dword [esp + 0x74], ecx
mov dword [esp + 0xc0], edx
shr ecx, 0x10
shr edx, 0x10
shr eax, 0x10
mov dword [esp + 0x78], ebx
mov byte [esp + 0x13], cl
mov byte [esp + 0x7f], dl
cmp al, 1
jbe 0x46dc11
cmp dword [esp + 0x12c], 0
je 0x46dbc7
cmp al, 0x19
jb 0x46dbc7
mov ebx, dword [esp + 0x2c]
mov ecx, 0x20
movzx eax, al
sub ecx, ebx
cmp eax, ecx
jae 0x46db6e
mov ecx, eax
mov esi, eax
sub esi, ecx
sub eax, esi
mov edx, eax
mov eax, dword [esp + 0x28]
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, esi
add ebx, edx
mov dword [esp + 0x2c], ebx
shl eax, cl
lea ecx, [esp + 0x28]
add eax, edi
mov ebx, eax
call fcn.0046f560
test esi, esi
je 0x46dbf3
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edx, esi
mov dword [esp + 0x2c], edx
add ebx, eax
jmp 0x46dbf3
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl ebx, cl
movzx eax, al
mov ecx, eax
neg ecx
and ecx, 0x1f
shr ebx, cl
add edx, eax
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edx
add ebx, edi
call fcn.0046f560
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x58], edx
mov dl, byte [esp + 0x7f]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x54], ebx
jmp 0x46dc8d
mov esi, dword [esp + 0x28]
xor ecx, ecx
test ebx, ebx
sete cl
mov dword [esp + 0x20], ecx
test al, al
jne 0x46dc40
test ecx, ecx
jne 0x46dc2e
mov ebx, dword [esp + 0x54]
jmp 0x46dc8d
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], ebx
jmp 0x46dc8d
mov ebx, dword [esp + 0x2c]
mov ecx, ebx
and ecx, 0x1f
mov eax, esi
shl eax, cl
mov ecx, dword [esp + 0x20]
inc ebx
mov dword [esp + 0x2c], ebx
shr eax, 0x1f
add eax, ecx
mov ecx, dword [esp + 0x54]
add eax, edi
lea edi, [ecx - 1]
cmp eax, 3
je 0x46dc6d
mov edi, dword [esp + eax*4 + 0x54]
xor ebx, ebx
test edi, edi
sete bl
add edi, ebx
cmp eax, 1
je 0x46dc83
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], ecx
mov ebx, edi
mov dword [esp + 0x54], edi
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xa4], ecx
test dl, dl
jbe 0x46dcd0
mov ecx, dword [esp + 0x2c]
and ecx, 0x1f
movzx edi, dl
mov eax, esi
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, edi
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xc4]
add eax, ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0xa4], eax
movzx edi, byte [esp + 0x13]
movzx edx, dl
add edx, edi
cmp edx, 0x14
jl 0x46dcec
lea ecx, [esp + 0x28]
call fcn.0046f560
mov esi, dword [esp + 0x28]
cmp byte [esp + 0x13], 0
mov edx, dword [esp + 0x78]
mov dword [esp + 0xa0], edx
jbe 0x46dd21
mov eax, dword [esp + 0x2c]
mov ecx, eax
and ecx, 0x1f
shl esi, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr esi, cl
add eax, edi
mov dword [esp + 0x2c], eax
add esi, edx
mov dword [esp + 0xa0], esi
lea ecx, [esp + 0x28]
call fcn.0046f560
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0xa0]
add ecx, eax
mov eax, dword [esp + 0x64]
cmp ebx, ecx
ja 0x46dd43
mov eax, dword [esp + 0x60]
movzx esi, byte [esp + 0x77]
mov edx, dword [esp + 0xa4]
sub eax, ebx
add eax, ecx
add ecx, edx
mov dword [esp + 0x68], ecx
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x2c]
lea edi, [esi + eax]
mov eax, dword [esp + 0x28]
mov ecx, edi
neg ecx
and ecx, 0x1f
mov edx, eax
shr edx, cl
movzx ecx, word [esp + 0x74]
and edx, dword [esi*4 + 0x6fa230]
add ecx, edx
movzx edx, byte [esp + 0xc3]
lea esi, [edx + edi]
mov dword [esp + 0x3c], ecx
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], esi
and eax, dword [edx*4 + 0x6fa230]
movzx edx, word [esp + 0xc0]
add edx, eax
mov dword [esp + 0x4c], edx
call fcn.0046f560
movzx edx, byte [esp + 0x9b]
mov eax, dword [esp + 0x2c]
inc dword [esp + 0x1c]
lea esi, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
movzx ecx, word [esp + 0x98]
and eax, dword [edx*4 + 0x6fa230]
mov edx, dword [esp + 0xa0]
add ecx, eax
mov eax, dword [esp + 0xa4]
mov dword [ebp], edx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0xac]
mov dword [ebp + 4], eax
mov dword [ebp + 8], ebx
mov dword [ebp + 0xc], ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], esi
add ebp, 0x10
call fcn.0046f560
cmp eax, 2
jle 0x46dad8
mov edx, dword [esp + 0x1c]
cmp edx, dword [esp + 0x90]
jl 0x46da01
lea ecx, [esp + 0x28]
call fcn.0046f560
cmp eax, 2
jg 0x46e51c
mov eax, dword [esp + 0x128]
cmp dword [esp + 0x1c], eax
jge 0x46e52d
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov esi, dword [eax + ecx*8]
mov ebp, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov ebx, dword [eax + ecx*8]
mov ecx, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x44]
mov edi, dword [eax + ecx*8]
mov edx, dword [eax + ecx*8 + 4]
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x13], al
mov eax, edi
mov dword [esp + 0x98], ebx
shr eax, 0x10
shr ebx, 0x10
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], ebp
mov dword [esp + 0xa0], edi
cmp al, 1
jbe 0x46dfa4
cmp dword [esp + 0x12c], 0
je 0x46df5b
cmp al, 0x19
jb 0x46df5b
mov ebp, dword [esp + 0x2c]
mov ecx, 0x20
movzx eax, al
sub ecx, ebp
cmp eax, ecx
jae 0x46def4
mov ecx, eax
mov esi, eax
sub esi, ecx
sub eax, esi
mov edi, eax
mov eax, dword [esp + 0x28]
mov ecx, ebp
and ecx, 0x1f
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, esi
add ebp, edi
mov dword [esp + 0x2c], ebp
shl eax, cl
lea ecx, [esp + 0x28]
add eax, edx
mov edi, eax
mov dword [esp + 0x84], edi
call fcn.0046f560
test esi, esi
je 0x46df8f
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edx, esi
mov dword [esp + 0x2c], edx
add edi, eax
mov dword [esp + 0x84], edi
jmp 0x46df8f
mov edi, dword [esp + 0x2c]
movzx esi, al
mov eax, dword [esp + 0x28]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edi, esi
mov dword [esp + 0x2c], edi
lea ecx, [esp + 0x28]
lea edi, [eax + edx]
mov dword [esp + 0x84], edi
call fcn.0046f560
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], eax
jmp 0x46e01c
xor ecx, ecx
test ebp, ebp
sete cl
mov edi, ecx
test al, al
jne 0x46dfd0
test edi, edi
jne 0x46dfc2
mov edi, dword [esp + 0x54]
mov dword [esp + 0x84], edi
jmp 0x46e020
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x58], edx
jmp 0x46e015
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, esi
and ecx, 0x1f
shl eax, cl
inc esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x54]
shr eax, 0x1f
add eax, edi
add eax, edx
lea edi, [esi - 1]
cmp eax, 3
je 0x46dffb
mov edi, dword [esp + eax*4 + 0x54]
xor ecx, ecx
test edi, edi
sete cl
add edi, ecx
cmp eax, 1
je 0x46e011
mov edx, dword [esp + 0x58]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], esi
mov dword [esp + 0x84], edi
mov dword [esp + 0x54], edi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0xb4], esi
test bl, bl
jbe 0x46e05c
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, ebp
and ecx, 0x1f
movzx edx, bl
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
add ebp, edx
mov dword [esp + 0x2c], ebp
add esi, eax
mov dword [esp + 0xb4], esi
movzx ebp, byte [esp + 0x13]
movzx eax, bl
add eax, ebp
cmp eax, 0x14
jl 0x46e074
lea ecx, [esp + 0x28]
call fcn.0046f560
cmp byte [esp + 0x13], 0
mov ebx, dword [esp + 0xd4]
mov dword [esp + 0xb0], ebx
jbe 0x46e0b0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, ebp
neg ecx
and ecx, 0x1f
shr eax, cl
add edx, ebp
mov dword [esp + 0x2c], edx
add ebx, eax
mov dword [esp + 0xb0], ebx
lea ecx, [esp + 0x28]
call fcn.0046f560
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
add ecx, ebx
cmp edi, ecx
ja 0x46e0cb
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x2c]
add esi, ecx
mov dword [esp + 0x68], esi
movzx esi, byte [esp + 0xd3]
sub eax, edi
add eax, ecx
lea edi, [esi + edx]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x28]
mov ecx, edi
neg ecx
and ecx, 0x1f
mov edx, eax
shr edx, cl
movzx ecx, word [esp + 0xd0]
and edx, dword [esi*4 + 0x6fa230]
add ecx, edx
movzx edx, byte [esp + 0x9b]
lea esi, [edx + edi]
mov dword [esp + 0x3c], ecx
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], esi
and eax, dword [edx*4 + 0x6fa230]
movzx edx, word [esp + 0x98]
add edx, eax
mov dword [esp + 0x4c], edx
call fcn.0046f560
movzx edx, byte [esp + 0xa3]
mov eax, dword [esp + 0x2c]
lea esi, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
movzx ecx, word [esp + 0xa0]
and eax, dword [edx*4 + 0x6fa230]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x1c]
add ecx, eax
and esi, 3
shl esi, 4
mov eax, dword [esp + esi + 0xe4]
mov ebx, dword [esp + esi + 0xdc]
mov edx, dword [esp + esi + 0xe0]
lea esi, [esp + esi + 0xd8]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x44], ecx
mov ecx, dword [esi]
lea edi, [ecx + eax]
lea eax, [ebx + ecx]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x18]
lea ebp, [ecx + eax]
mov eax, edi
sub eax, edx
mov dword [esp + 0xc0], ebp
cmp ebp, dword [esp + 0x88]
ja 0x46e483
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x74]
add edx, ebp
mov ebp, dword [esp + 0x24]
add ebp, 0xffffffe0
cmp edx, ebp
ja 0x46e483
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x74]
sub edx, dword [esp + 0x14]
add ebp, 0x20
cmp edx, ebp
jb 0x46e483
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov edx, dword [edx]
mov dword [ebp], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 4]
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 8]
mov dword [ebp + 8], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0xc]
mov dword [ebp + 0xc], edx
cmp ecx, 0x10
jbe 0x46e2b7
mov edx, dword [esp + 0x18]
add ecx, 0xfffffff0
mov dword [esp + 0x20], ecx
lea ecx, [ebp + 0x10]
mov ebp, dword [esp + 0x20]
add ebp, ecx
add edx, 0x10
cmp dword [esp + 0x20], 0x10
mov dword [esp + 0x18], ebp
mov ebp, dword [edx]
mov dword [ecx], ebp
mov ebp, dword [edx + 4]
mov dword [ecx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ecx + 8], ebp
mov ebp, dword [edx + 0xc]
mov dword [ecx + 0xc], ebp
jle 0x46e2b7
add ecx, 0x10
add edx, 0x10
mov ebp, dword [edx]
mov dword [ecx], ebp
mov ebp, dword [edx + 4]
mov dword [ecx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ecx + 8], ebp
mov ebp, dword [edx + 0xc]
mov dword [ecx + 0xc], ebp
mov ebp, dword [edx + 0x10]
add edx, 0x10
add ecx, 0x10
mov dword [ecx], ebp
mov ebp, dword [edx + 4]
mov dword [ecx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ecx + 8], ebp
mov ebp, dword [edx + 0xc]
mov dword [ecx + 0xc], ebp
add ecx, 0x10
add edx, 0x10
cmp ecx, dword [esp + 0x18]
jb 0x46e278
mov ecx, dword [esp + 0xc0]
mov edx, edi
sub edx, dword [esp + 0x80]
mov dword [esp + 0x18], ecx
mov ecx, dword [esi + 8]
cmp ecx, edx
jbe 0x46e32b
mov edx, edi
sub edx, dword [esp + 0x94]
cmp ecx, edx
ja 0x46da01
mov ebp, dword [esp + 0x8c]
mov ecx, ebp
sub ecx, dword [esp + 0x80]
add eax, ecx
lea edx, [eax + ebx]
cmp edx, ebp
ja 0x46e313
push ebx
push eax
push edi
call fcn.005f8180
mov eax, dword [esp + 0x80]
add esp, 0xc
jmp 0x46e4d2
sub ebp, eax
push ebp
push eax
push edi
call fcn.005f8180
mov eax, dword [esp + 0x8c]
add esp, 0xc
add edi, ebp
sub ebx, ebp
mov ebp, dword [esi + 8]
cmp ebp, 0x10
jb 0x46e39d
cmp ebx, 0x10
mov ecx, dword [eax]
mov dword [edi], ecx
mov ecx, dword [eax + 4]
mov dword [edi + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edi + 8], ecx
mov ecx, dword [eax + 0xc]
lea edx, [ebx + edi]
mov dword [edi + 0xc], ecx
jle 0x46e394
lea ecx, [edi + 0x10]
add eax, 0x10
mov edi, dword [eax]
mov dword [ecx], edi
mov edi, dword [eax + 4]
mov dword [ecx + 4], edi
mov edi, dword [eax + 8]
mov dword [ecx + 8], edi
mov edi, dword [eax + 0xc]
mov dword [ecx + 0xc], edi
mov edi, dword [eax + 0x10]
add eax, 0x10
add ecx, 0x10
mov dword [ecx], edi
mov edi, dword [eax + 4]
mov dword [ecx + 4], edi
mov edi, dword [eax + 8]
mov dword [ecx + 8], edi
mov edi, dword [eax + 0xc]
mov dword [ecx + 0xc], edi
add ecx, 0x10
add eax, 0x10
cmp ecx, edx
jb 0x46e357
mov eax, dword [esp + 0x74]
jmp 0x46e4d2
cmp ebp, 8
jae 0x46e3d0
movzx edx, byte [eax]
mov ecx, dword [ebp*4 + 0x6facc8]
mov byte [edi], dl
movzx edx, byte [eax + 1]
mov byte [edi + 1], dl
movzx edx, byte [eax + 2]
mov byte [edi + 2], dl
movzx edx, byte [eax + 3]
mov byte [edi + 3], dl
add eax, dword [ebp*4 + 0x6faca8]
mov edx, dword [eax]
sub eax, ecx
jmp 0x46e3d7
mov ecx, dword [eax]
mov dword [edi], ecx
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
cmp ebx, 8
jbe 0x46e47d
lea ecx, [eax + 8]
lea eax, [edi + 8]
mov edi, eax
add ebx, 0xfffffff8
sub edi, ecx
cmp edi, 0x10
lea edx, [eax + ebx]
jge 0x46e41c
sub ecx, eax
lea ebx, [ebx]
mov edi, dword [eax + ecx]
mov dword [eax], edi
mov edi, dword [eax + ecx + 4]
mov dword [eax + 4], edi
add eax, 8
cmp eax, edx
jb 0x46e400
mov eax, dword [esp + 0x74]
jmp 0x46e4d2
cmp ebx, 0x10
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [eax + 4], edi
mov edi, dword [ecx + 8]
mov dword [eax + 8], edi
mov edi, dword [ecx + 0xc]
mov dword [eax + 0xc], edi
jle 0x46e47d
add eax, 0x10
add ecx, 0x10
lea ecx, [ecx]
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [eax + 4], edi
mov edi, dword [ecx + 8]
mov dword [eax + 8], edi
mov edi, dword [ecx + 0xc]
mov dword [eax + 0xc], edi
mov edi, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [eax + 4], edi
mov edi, dword [ecx + 8]
mov dword [eax + 8], edi
mov edi, dword [ecx + 0xc]
mov dword [eax + 0xc], edi
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x46e440
mov eax, dword [esp + 0x74]
jmp 0x46e4d2
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x80]
push eax
mov eax, dword [esp + 0x8c]
push ecx
push edx
mov edx, dword [esi]
push eax
lea ecx, [esp + 0x28]
push ecx
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 8]
mov ecx, ebx
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x38]
call fcn.0046d000
add esp, 0x24
cmp eax, 0xffffff88
ja 0x46e923
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb4]
add dword [esp + 0x14], eax
inc dword [esp + 0x1c]
mov dword [esi], edx
mov edx, dword [esp + 0x84]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0xbc]
mov dword [esi + 8], edx
mov dword [esi + 0xc], ecx
lea ecx, [esp + 0x28]
call fcn.0046f560
cmp eax, 2
jle 0x46de50
mov edx, dword [esp + 0x128]
cmp dword [esp + 0x1c], edx
jl 0x46da01
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x128]
mov dword [esp + 0x1c], eax
jge 0x46e8b5
lea esp, [esp]
and eax, 3
shl eax, 4
mov edx, dword [esp + eax + 0xe4]
mov ecx, dword [esp + eax + 0xd8]
mov ebp, dword [esp + eax + 0xdc]
mov edi, dword [esp + eax + 0xe0]
lea eax, [esp + eax + 0xd8]
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0x14]
lea esi, [ecx + edx]
lea edx, [ecx + ebp]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x18]
lea ebx, [ecx + edx]
mov edx, esi
sub edx, edi
mov dword [esp + 0xb8], edi
mov dword [esp + 0x20], ebx
cmp ebx, dword [esp + 0x88]
ja 0x46e843
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x74]
add edi, ebx
mov ebx, dword [esp + 0x24]
add ebx, 0xffffffe0
cmp edi, ebx
ja 0x46e843
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x74]
sub edi, dword [esp + 0x14]
add ebx, 0x20
cmp edi, ebx
jb 0x46e843
mov eax, dword [esp + 0x18]
mov edi, dword [eax]
mov ebx, dword [esp + 0x14]
mov dword [ebx], edi
mov edi, dword [eax + 4]
mov dword [ebx + 4], edi
mov edi, dword [eax + 8]
mov dword [ebx + 8], edi
mov edi, dword [eax + 0xc]
mov dword [ebx + 0xc], edi
cmp ecx, 0x10
jbe 0x46e680
lea edi, [ecx - 0x10]
cmp edi, 0x10
lea ecx, [eax + 0x10]
lea eax, [ebx + 0x10]
lea ebx, [eax + edi]
mov dword [esp + 0xc0], ebx
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
jle 0x46e680
mov edi, dword [esp + 0xc0]
add eax, 0x10
add ecx, 0x10
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
add eax, 0x10
add ecx, 0x10
cmp eax, edi
jb 0x46e643
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x80]
mov edi, dword [esp + 0xb8]
mov dword [esp + 0x18], ecx
mov ecx, esi
sub ecx, ebx
mov eax, esi
cmp edi, ecx
jbe 0x46e6f5
sub eax, dword [esp + 0x94]
cmp edi, eax
ja 0x46da01
mov edi, dword [esp + 0x8c]
mov ecx, edi
sub ecx, ebx
add edx, ecx
lea eax, [edx + ebp]
cmp eax, edi
ja 0x46e6da
push ebp
push edx
push esi
call fcn.005f8180
mov eax, dword [esp + 0x80]
add esp, 0xc
jmp 0x46e892
sub edi, edx
push edi
push edx
push esi
call fcn.005f8180
add esp, 0xc
lea eax, [edi + esi]
sub ebp, edi
mov edi, dword [esp + 0xb8]
mov edx, ebx
cmp edi, 0x10
jb 0x46e766
cmp ebp, 0x10
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
mov ecx, dword [edx + 8]
mov dword [eax + 8], ecx
mov ecx, dword [edx + 0xc]
lea esi, [eax + ebp]
mov dword [eax + 0xc], ecx
jle 0x46e75d
add eax, 0x10
lea ecx, [edx + 0x10]
mov edi, edi
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
add eax, 0x10
add ecx, 0x10
cmp eax, esi
jb 0x46e720
mov eax, dword [esp + 0x74]
jmp 0x46e892
cmp edi, 8
jae 0x46e799
movzx ecx, byte [edx]
mov esi, dword [edi*4 + 0x6facc8]
mov byte [eax], cl
movzx ecx, byte [edx + 1]
mov byte [eax + 1], cl
movzx ecx, byte [edx + 2]
mov byte [eax + 2], cl
movzx ecx, byte [edx + 3]
mov byte [eax + 3], cl
add edx, dword [edi*4 + 0x6faca8]
mov ecx, dword [edx]
sub edx, esi
jmp 0x46e7a0
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
cmp ebp, 8
jbe 0x46e83d
add eax, 8
lea ecx, [edx + 8]
mov esi, eax
add ebp, 0xfffffff8
sub esi, ecx
cmp esi, 0x10
lea edx, [eax + ebp]
jge 0x46e7df
sub ecx, eax
mov esi, dword [eax + ecx]
mov dword [eax], esi
mov esi, dword [eax + ecx + 4]
mov dword [eax + 4], esi
add eax, 8
cmp eax, edx
jb 0x46e7c3
mov eax, dword [esp + 0x74]
jmp 0x46e892
cmp ebp, 0x10
mov esi, dword [ecx]
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov dword [eax + 4], esi
mov esi, dword [ecx + 8]
mov dword [eax + 8], esi
mov esi, dword [ecx + 0xc]
mov dword [eax + 0xc], esi
jle 0x46e83d
add eax, 0x10
add ecx, 0x10
mov esi, dword [ecx]
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov dword [eax + 4], esi
mov esi, dword [ecx + 8]
mov dword [eax + 8], esi
mov esi, dword [ecx + 0xc]
mov dword [eax + 0xc], esi
mov esi, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov dword [eax + 4], esi
mov esi, dword [ecx + 8]
mov dword [eax + 8], esi
mov esi, dword [ecx + 0xc]
mov dword [eax + 0xc], esi
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x46e800
mov eax, dword [esp + 0x74]
jmp 0x46e892
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x84]
push ecx
mov ecx, dword [esp + 0x90]
push edx
push ecx
lea edx, [esp + 0x28]
push edx
mov edx, dword [eax]
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, ebp
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x38]
call fcn.0046d000
add esp, 0x24
cmp eax, 0xffffff88
ja 0x46e923
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x128]
mov dword [esp + 0x1c], eax
jl 0x46e550
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x120]
mov dword [eax + 0x682c], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0x6834], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 0x6830], edx
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x24]
sub eax, ecx
mov esi, eax
sub edx, ebx
cmp esi, edx
jbe 0x46e90e
mov eax, 0xffffffba
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret
test ebx, ebx
je 0x46e91f
push esi
push ecx
push ebx
call fcn.005f4c50
add esp, 0xc
add ebx, esi
sub ebx, ebp
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret