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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc8
mov eax, dword [0x511080]
xor eax, esp
mov dword [esp + 0xc4], eax
mov eax, dword [ebp + 0x10]
xor ecx, ecx
push esi
mov esi, dword [ebp + 0xc]
xor edx, edx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], edi
mov cl, byte [edi + 0x15]
and cl, 2
mov dword [esp + 0x70], edx
mov byte [esp + 0x13], cl
je 0x41955b
mov edx, dword [eax]
mov dword [esp + 0x70], edx
test cl, cl
lea edx, [eax + 4]
cmove edx, eax
movsx eax, byte [esi]
mov dword [esp + 0x14], edx
test eax, eax
je case.default.0x419933
cmp eax, 0x25
je 0x4195d3
mov edx, esi
mov dword [esp + 0x24], edx
nop dword [eax]
mov al, byte [esi + 1]
inc esi
test al, al
je 0x41958c
cmp al, 0x25
jne 0x419580
mov eax, dword [edi + 0x10]
mov ecx, esi
sub ecx, edx
add eax, ecx
mov dword [esp + 0x50], eax
cmp eax, dword [edi + 8]
jb 0x4195ab
push ecx
mov ecx, edi
call fcn.0041b320
add esp, 4
jmp 0x4195c6
test ecx, ecx
je 0x4195c6
mov dword [edi + 0x10], eax
mov eax, dword [edi + 4]
push ecx
sub eax, ecx
add eax, dword [esp + 0x54]
push edx
push eax
call fcn.004d4640
add esp, 0xc
cmp byte [esi], 0
je case.default.0x419933
mov edx, dword [esp + 0x14]
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x74], esi
test ecx, ecx
je 0x41af40
xor al, al
mov dword [esp + 0x1c], 0
or edi, 0xffffffff
mov byte [esp + 0x4f], al
mov byte [esp + 0x10], al
mov byte [esp + 0x2f], al
mov byte [esp + 0x1b], al
mov byte [esp + 0x12], al
mov byte [esp + 0xf], al
mov byte [esp + 0x1a], al
mov dword [esp + 0x20], edi
lea eax, [ecx - 0x20]
cmp eax, 0x4c
ja case.0x419624.34
movzx eax, byte [eax + 0x41afc0]
jmp dword [eax*4 + 0x41af90]
mov byte [esp + 0xf], 1
jmp 0x41989e
mov byte [esp + 0x12], 0x2b
jmp 0x41989e
mov byte [esp + 0x12], 0x20
jmp 0x41989e
mov byte [esp + 0x2f], 1
jmp 0x41989e
mov byte [esp + 0x10], 1
jmp 0x41989e
mov byte [esp + 0x4f], 1
jmp 0x41989e
mov byte [esp + 0x1b], 0x2c
jmp 0x41989e
inc esi
lea eax, [ecx - 0x30]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x74], esi
movsx ecx, byte [esi]
cmp ecx, 0x30
jl 0x4196ae
mov edi, eax
cmp ecx, 0x39
ja 0x41969e
lea edi, [edi + edi*4]
inc esi
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x419687
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x74], esi
and eax, 0x7fffffff
mov dword [esp + 0x1c], eax
cmp ecx, 0x2e
je 0x41989d
jmp 0x419898
cmp byte [esp + 0x13], 0
je 0x41974c
mov eax, dword [esp + 0x70]
mov edx, dword [eax + 4]
cmp dword [eax], edx
jg 0x4196ea
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x40]
jmp 0x419753
mov eax, dword [eax + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov edx, dword [esp + 0x70]
mov dword [edx + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x41970d
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [esp + 0x44], edx
jmp 0x419753
test al, 8
je 0x419720
movsd xmm0, qword [ecx]
call fcn.0043f190
mov dword [esp + 0x44], edx
jmp 0x419753
test al, 0x12
je 0x419735
cmp dword [ecx + 8], 0
je 0x419735
call fcn.0043f1c0
mov dword [esp + 0x44], edx
jmp 0x419753
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x44], edx
jmp 0x419753
add dword [esp + 0x14], 4
mov eax, dword [edx]
mov dword [esp + 0x1c], eax
test eax, eax
jns 0x419777
mov byte [esp + 0xf], 1
cmp eax, 0x80000001
jl 0x41976f
neg eax
mov dword [esp + 0x1c], eax
jmp 0x419777
mov dword [esp + 0x1c], 0
mov al, byte [esi + 1]
lea edx, [esi + 1]
movsx ecx, al
cmp al, 0x2e
je 0x41989e
cmp al, 0x6c
je 0x41989e
mov dword [esp + 0x74], edx
jmp case.0x419624.34
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x74], esi
cmp ecx, 0x2a
jne 0x41986c
cmp byte [esp + 0x13], 0
je 0x419832
mov edi, dword [esp + 0x70]
mov edx, dword [edi + 4]
cmp dword [edi], edx
jg 0x4197d0
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov edi, dword [esp + 0x40]
jmp 0x419839
mov eax, dword [edi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [edi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x4197ef
mov edx, dword [ecx + 4]
mov edi, dword [ecx]
mov dword [esp + 0x44], edx
jmp 0x419839
test al, 8
je 0x419804
movsd xmm0, qword [ecx]
call fcn.0043f190
mov edi, eax
mov dword [esp + 0x44], edx
jmp 0x419839
test al, 0x12
je 0x41981b
cmp dword [ecx + 8], 0
je 0x41981b
call fcn.0043f1c0
mov edi, eax
mov dword [esp + 0x44], edx
jmp 0x419839
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x44], edx
jmp 0x419839
add dword [esp + 0x14], 4
mov edi, dword [edx]
mov dword [esp + 0x20], edi
test edi, edi
jns 0x419861
cmp edi, 0x80000001
jl 0x41985a
movsx ecx, byte [esi + 1]
neg edi
inc esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x74], esi
jmp 0x419898
or edi, 0xffffffff
mov dword [esp + 0x20], edi
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x74], esi
jmp 0x419898
xor edi, edi
cmp ecx, 0x30
jl 0x41988e
cmp ecx, 0x39
ja 0x41988a
lea edi, [edi + edi*4]
inc esi
lea edi, [edi - 0x18]
lea edi, [ecx + edi*2]
movsx ecx, byte [esi]
cmp ecx, 0x30
jge 0x419873
mov dword [esp + 0x74], esi
and edi, 0x7fffffff
mov dword [esp + 0x20], edi
cmp ecx, 0x6c
jne case.0x419624.34
dec esi
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x74], esi
test ecx, ecx
je case.0x419624.34
mov edx, dword [esp + 0x14]
jmp 0x419611
movsx ecx, byte [esi + 1]
inc esi
mov byte [esp + 0x1a], 1
mov dword [esp + 0x74], esi
cmp ecx, 0x6c
jne case.0x419624.34
movsx ecx, byte [esi + 1]
inc esi
mov dword [esp + 0x74], esi
mov byte [esp + 0x1a], 2
mov eax, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x30], eax
mov edx, 0x503f30
mov dword [esp + 0x68], 0x503f30
mov byte [esp + 0x11], 0x11
movsx eax, byte [edx]
cmp ecx, eax
je 0x41990e
add edx, 6
inc esi
cmp edx, 0x503fba
jl 0x4198f1
mov dl, byte [esp + 0x11]
mov ecx, dword [esp + 0x68]
jmp 0x419927
lea eax, [esi + esi*2]
mov dl, byte [eax*2 + 0x503f33]
lea ecx, [eax*2 + 0x503f30]
mov dword [esp + 0x68], ecx
mov byte [esp + 0x11], dl
movzx eax, dl
cmp eax, 0x10
ja case.default.0x419933
jmp dword [eax*4 + 0x41b010]
mov byte [esp + 0x1a], 1
mov byte [esp + 0x1b], 0
test byte [ecx + 2], 1
je 0x419a3c
cmp byte [esp + 0x13], 0
je 0x4199e5
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x4199c6
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x419992
mov eax, dword [ecx]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
jmp 0x419a0b
test al, 8
je 0x4199ab
movsd xmm0, qword [ecx]
call fcn.0043f190
mov dword [esp + 0x28], edx
mov ecx, edx
mov dword [esp + 0x30], eax
jmp 0x419a0b
test al, 0x12
je 0x4199c6
cmp dword [ecx + 8], 0
je 0x4199c6
call fcn.0043f1c0
mov dword [esp + 0x28], edx
mov ecx, edx
mov dword [esp + 0x30], eax
jmp 0x419a0b
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x30], eax
jmp 0x419a0b
mov al, byte [esp + 0x1a]
mov ecx, dword [esp + 0x30]
test al, al
je 0x419a01
cmp al, 2
mov eax, dword [ecx]
jne 0x419a03
add dword [esp + 0x14], 8
mov ecx, dword [ecx + 4]
jmp 0x419a0b
mov eax, dword [ecx]
add dword [esp + 0x14], 4
cdq
mov ecx, edx
test ecx, ecx
jg 0x419a2b
jl 0x419a15
test eax, eax
jae 0x419a2b
neg eax
mov dl, 0x2d
mov dword [esp + 0x30], eax
adc ecx, 0
neg ecx
mov dword [esp + 0x28], ecx
jmp 0x419b09
mov dl, byte [esp + 0x12]
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], ecx
jmp 0x419b0d
cmp byte [esp + 0x13], 0
je 0x419ad6
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x419ab7
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 0x24
je 0x419a80
mov eax, dword [ecx]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
jmp 0x419b07
test al, 8
je 0x419a9c
movsd xmm0, qword [ecx]
call fcn.0043f190
mov dword [esp + 0x28], edx
mov ecx, edx
mov dword [esp + 0x30], eax
jmp 0x419b07
test al, 0x12
je 0x419ab7
cmp dword [ecx + 8], 0
je 0x419ab7
call fcn.0043f1c0
mov dword [esp + 0x28], edx
mov ecx, edx
mov dword [esp + 0x30], eax
jmp 0x419b07
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x30], eax
jmp 0x419b07
mov al, byte [esp + 0x1a]
mov ecx, dword [esp + 0x30]
test al, al
je 0x419af6
cmp al, 2
mov eax, dword [ecx]
mov dword [esp + 0x30], eax
jne 0x419afc
add dword [esp + 0x14], 8
mov ecx, dword [ecx + 4]
jmp 0x419b03
mov eax, dword [ecx]
mov dword [esp + 0x30], eax
add dword [esp + 0x14], 4
xor ecx, ecx
mov dword [esp + 0x28], ecx
xor dl, dl
mov byte [esp + 0x12], dl
or eax, ecx
jne 0x419b15
mov byte [esp + 0x2f], al
cmp byte [esp + 0x4f], 0
je 0x419b32
mov ecx, dword [esp + 0x1c]
xor eax, eax
test dl, dl
setne al
sub ecx, eax
cmp edi, ecx
cmovl edi, ecx
mov dword [esp + 0x20], edi
cmp edi, 0x25
jge 0x419b4d
mov esi, 0x46
lea eax, [esp + 0x80]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], eax
jmp 0x419b9c
mov eax, edi
cdq
mov esi, eax
mov ecx, edx
add esi, 0xa
mov dword [esp + 0x5c], esi
adc ecx, 0
cmp byte [esp + 0x1b], 0
je 0x419b7c
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
add esi, eax
mov dword [esp + 0x5c], esi
adc ecx, edx
push ecx
mov ecx, dword [esp + 0x3c]
push esi
call fcn.00419430
mov ecx, eax
mov dword [esp + 0x68], eax
add esp, 8
mov dword [esp + 0x7c], ecx
test ecx, ecx
je case.default.0x419933
dec esi
add esi, eax
cmp byte [esp + 0x11], 0xf
mov dword [esp + 0x24], esi
jne 0x419c61
mov eax, dword [esp + 0x30]
mov edx, 0xcccccccd
mov ecx, 0xcccccccd
lea edi, [edx - 1]
mul edx
mov dword [esp + 0x40], eax
mov esi, edx
mov eax, dword [esp + 0x30]
mul edi
mov edi, eax
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x28]
mul ecx
mov ecx, eax
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x28]
mov edx, 0xcccccccc
mul edx
add ecx, esi
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x50]
adc edx, 0
mov dword [esp + 0x78], eax
mov esi, eax
add edi, ecx
mov ecx, dword [esp + 0x3c]
adc ecx, 0
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x30]
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x40]
adc eax, eax
add esi, edx
adc ecx, eax
shrd esi, ecx, 3
shr ecx, 3
lea eax, [esi + esi*4]
add eax, eax
sub edi, eax
cmp edi, 4
jge 0x419c43
push 0
push 0xa
push ecx
push esi
call fcn.004f4c50
cmp eax, 1
jne 0x419c45
test edx, edx
jne 0x419c45
xor edi, edi
mov esi, dword [esp + 0x24]
movzx eax, byte [edi*2 + 0x504869]
mov byte [esi - 1], al
sub esi, 2
movzx eax, byte [edi*2 + str.thstndrd]
mov byte [esi], al
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x30]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x40], eax
movzx eax, byte [ecx + 1]
cdq
mov ecx, edx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
nop dword [eax]
push ecx
push dword [esp + 0x54]
dec esi
push eax
push edi
call fcn.004f4c50
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
push dword [esp + 0x54]
push dword [esp + 0x30]
mov al, byte [eax + ecx]
push edi
mov byte [esi], al
call fcn.004d3a30
mov ecx, dword [esp + 0x3c]
mov edi, eax
mov eax, edx
mov dword [esp + 0x28], eax
test eax, eax
ja 0x419c90
jb 0x419cce
test edi, edi
jne 0x419c90
mov eax, dword [esp + 0x60]
mov edx, esi
mov edi, dword [esp + 0x20]
sub eax, edx
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x5c]
lea ecx, [esi - 1]
add ecx, eax
cmp ecx, edi
jge 0x419cfe
mov eax, edi
sub eax, ecx
mov ecx, edi
dec edx
mov byte [edx], 0x30
sub eax, 1
jne 0x419cf1
mov dword [esp + 0x24], edx
cmp byte [esp + 0x1b], 0
je 0x419d4a
lea eax, [ecx - 1]
mov ecx, 3
cdq
idiv ecx
xor ecx, ecx
mov esi, eax
lea edi, [edx + 1]
mov edx, dword [esp + 0x24]
sub edx, esi
mov dword [esp + 0x24], edx
test esi, esi
jle 0x419d46
lea eax, [esi + ecx]
mov al, byte [eax + edx]
mov byte [ecx + edx], al
sub edi, 1
jne 0x419d41
mov al, byte [esp + 0x1b]
inc ecx
dec esi
mov edi, 3
mov byte [ecx + edx], al
inc ecx
test esi, esi
jg 0x419d25
mov esi, dword [esp + 0x5c]
mov al, byte [esp + 0x12]
test al, al
je 0x419d59
dec edx
mov dword [esp + 0x24], edx
mov byte [edx], al
cmp byte [esp + 0x2f], 0
je 0x419d90
mov eax, dword [esp + 0x68]
mov al, byte [eax + 5]
test al, al
je 0x419d90
movzx eax, al
add eax, 0x4ff510
mov cl, byte [eax]
test cl, cl
je 0x419d90
nop dword [eax]
dec edx
lea eax, [eax + 1]
mov byte [edx], cl
mov cl, byte [eax]
test cl, cl
jne 0x419d80
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x60]
dec esi
sub eax, edx
add esi, eax
mov edi, dword [esp + 0x1c]
mov al, byte [esp + 0xf]
sub edi, esi
mov dword [esp + 0x1c], edi
test edi, edi
jle 0x41a426
test al, al
jne 0x41ab93
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov dword [esp + 0x3c], edi
mov eax, dword [eax + 0x10]
mov dword [esp + 0x50], eax
mov eax, edi
cdq
add dword [esp + 0x50], eax
adc ecx, edx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 8]
test ecx, ecx
jl 0x419dff
jg 0x419de4
cmp dword [esp + 0x50], eax
jb 0x419dff
mov ecx, dword [esp + 0x38]
mov edx, edi
call fcn.0041b060
mov edx, dword [esp + 0x38]
mov dword [esp + 0x3c], eax
test eax, eax
jle 0x41ab97
mov edi, dword [esp + 0x3c]
mov eax, dword [edx + 0x10]
dec edi
mov ecx, dword [edx + 4]
mov byte [ecx + eax], 0x20
inc dword [edx + 0x10]
test edi, edi
jg 0x419e03
mov edi, dword [esp + 0x1c]
jmp 0x41ab97
cmp byte [esp + 0x13], 0
je 0x419e9c
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jle 0x419e8d
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
movzx eax, word [ecx + 0x10]
test al, 8
je 0x419e58
movsd xmm1, qword [ecx]
mov dl, byte [esp + 0x11]
movsd qword [esp + 0x60], xmm1
jmp 0x419eaf
test al, 0x24
je 0x419e75
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
call fcn.004f5080
mov dl, byte [esp + 0x11]
movaps xmm1, xmm0
movsd qword [esp + 0x60], xmm1
jmp 0x419eaf
test al, 0x12
je 0x419e8d
call fcn.0043f240
mov dl, byte [esp + 0x11]
movaps xmm1, xmm0
movsd qword [esp + 0x60], xmm0
jmp 0x419eaf
mov dl, byte [esp + 0x11]
xorps xmm1, xmm1
movsd qword [esp + 0x60], xmm1
jmp 0x419eaf
mov ecx, dword [esp + 0x30]
add dword [esp + 0x14], 8
movsd xmm1, qword [ecx]
movsd qword [esp + 0x60], xmm1
test edi, edi
jns 0x419eba
mov edi, 6
jmp 0x419ec8
cmp edi, 0x5f5e100
mov eax, 0x5f5e100
cmovg edi, eax
xorps xmm2, xmm2
comisd xmm2, xmm1
jbe 0x419ee3
xorps xmm1, xmmword [0x50c5e0]
movsd qword [esp + 0x60], xmm1
mov byte [esp + 0x12], 0x2d
cmp dl, 3
jne 0x419eed
test edi, edi
jle 0x419eed
dec edi
mov esi, edi
mov eax, 0xcccccccd
and esi, 0xfff
mul esi
mov eax, esi
shr edx, 3
lea ecx, [edx + edx*4]
add ecx, ecx
sub eax, ecx
movsd xmm3, qword [eax*8 + 0x504cd8]
cmp esi, 0xa
jb 0x419f29
movsd xmm0, qword [0x50c420]
nop
mulsd xmm3, xmm0
sub edx, 1
jne 0x419f20
cmp byte [esp + 0x11], 1
jne 0x419f7a
movsd qword [esp + 0x40], xmm1
mov eax, 0x55555556
mov ecx, dword [esp + 0x44]
shr ecx, 0x14
and ecx, 0x7ff
sub ecx, 0x3ff
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, edi
cmp eax, 0xf
jge 0x419f6d
movaps xmm0, xmm1
mulsd xmm0, qword [0x50c418]
addsd xmm3, xmm0
movaps xmm0, xmm3
addsd xmm1, xmm0
movsd qword [esp + 0x60], xmm1
movsd qword [esp + 0x40], xmm1
xor eax, eax
mov ecx, dword [esp + 0x44]
mov edx, ecx
and edx, 0x7ff00000
mov dword [esp + 0x20], eax
cmp edx, 0x7ff00000
jne 0x419fbe
mov eax, dword [esp + 0x40]
and ecx, 0xfffff
or eax, ecx
je 0x419fba
mov dword [esp + 0x24], 0x505e20
mov esi, 3
jmp 0x419d99
mov eax, dword [esp + 0x20]
comisd xmm1, xmm2
jbe 0x41a0ec
movsd xmm4, qword [0x50c518]
comisd xmm1, xmm4
movsd xmm5, qword [0x50c448]
movaps xmm2, xmm5
jb 0x41a000
cmp eax, 0x15e
jg 0x419ffc
mulsd xmm2, xmm4
add eax, 0x64
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x419fe1
mov dword [esp + 0x20], eax
movsd xmm4, qword [0x50c4e0]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x41a030
cmp eax, 0x15e
jg 0x41a02c
movaps xmm2, xmm0
add eax, 0xa
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x41a015
mov dword [esp + 0x20], eax
movsd xmm4, qword [0x50c458]
movaps xmm0, xmm2
mulsd xmm0, xmm4
comisd xmm1, xmm0
jb 0x41a05e
cmp eax, 0x15e
jg 0x41a05a
movaps xmm2, xmm0
inc eax
mulsd xmm0, xmm4
comisd xmm1, xmm0
jae 0x41a045
mov dword [esp + 0x20], eax
divsd xmm1, xmm2
movsd xmm0, qword [0x50c428]
comisd xmm0, xmm1
movsd qword [esp + 0x60], xmm1
jbe 0x41a097
movsd xmm2, qword [0x50c4c0]
nop
mulsd xmm1, xmm2
sub eax, 8
comisd xmm0, xmm1
ja 0x41a080
mov dword [esp + 0x20], eax
movsd qword [esp + 0x60], xmm1
comisd xmm5, xmm1
jbe 0x41a0b5
nop dword [eax]
mulsd xmm1, xmm4
dec eax
comisd xmm5, xmm1
ja 0x41a0a0
mov dword [esp + 0x20], eax
movsd qword [esp + 0x60], xmm1
cmp eax, 0x15e
jle 0x41a0f4
lea ecx, [esp + 0x80]
xor eax, eax
mov dword [esp + 0x24], ecx
mov cl, byte [esp + 0x12]
test cl, cl
mov byte [esp + 0x80], cl
setne al
mov dword [esp + eax + 0x80], 0x666e49
lea esi, [eax + 3]
jmp 0x419d99
movsd xmm4, qword [0x50c458]
mov dl, byte [esp + 0x11]
lea esi, [esp + 0x80]
cmp dl, 1
je 0x41a127
addsd xmm1, xmm3
comisd xmm1, xmm4
movsd qword [esp + 0x60], xmm1
jb 0x41a127
mulsd xmm1, qword [0x50c438]
inc eax
mov dword [esp + 0x20], eax
movsd qword [esp + 0x60], xmm1
mov dword [esp + 0x78], eax
cmp dl, 3
jne 0x41a202
cmp byte [esp + 0x2f], 0
sete byte [esp + 0x1b]
cmp eax, 0xfffffffc
jl 0x41a1f2
cmp eax, edi
jg 0x41a1f2
sub edi, eax
mov byte [esp + 0x11], 1
mov ecx, eax
mov dword [esp + 0x50], eax
xor eax, eax
test ecx, ecx
cmovg eax, ecx
cdq
mov ecx, eax
mov dword [esp + 0x3c], edx
mov eax, edi
cdq
add ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x40], ecx
adc dword [esp + 0x3c], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x3c]
adc eax, edx
add ecx, 0xf
adc eax, 0
test eax, eax
jl 0x41a1b1
jg 0x41a195
cmp ecx, 0x46
jbe 0x41a1b1
push eax
push ecx
mov ecx, dword [esp + 0x40]
call fcn.00419430
add esp, 8
mov dword [esp + 0x7c], eax
mov esi, eax
test eax, eax
je case.default.0x419933
movzx eax, byte [esp + 0x10]
test edi, edi
mov dl, byte [esp + 0x12]
mov dword [esp + 0x24], esi
lea eax, [eax + eax*4]
lea ecx, [eax*2 + 0x10]
setg al
or al, byte [esp + 0x10]
or al, byte [esp + 0x2f]
mov dword [esp + 0x3c], ecx
mov byte [esp + 0x1a], al
test dl, dl
je 0x41a1e4
mov byte [esi], dl
inc esi
mov edx, dword [esp + 0x50]
test edx, edx
jns 0x41a21e
mov byte [esi], 0x30
inc esi
jmp 0x41a265
xor ecx, ecx
mov byte [esp + 0x11], 2
mov dword [esp + 0x50], ecx
jmp 0x41a15c
mov cl, byte [esp + 0x10]
mov byte [esp + 0x1b], cl
cmp dl, 2
jne 0x41a156
xor ecx, ecx
mov dword [esp + 0x50], ecx
jmp 0x41a15c
movsd xmm1, qword [esp + 0x60]
movsd xmm2, qword [0x50c458]
nop dword [eax]
test ecx, ecx
jg 0x41a238
mov al, 0x30
jmp 0x41a24f
cvttsd2si eax, xmm1
dec ecx
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm2
mov byte [esi], al
inc esi
sub edx, 1
jns 0x41a230
mov al, byte [esp + 0x1a]
mov dword [esp + 0x3c], ecx
movsd qword [esp + 0x60], xmm1
test al, al
je 0x41a26d
mov byte [esi], 0x2e
inc esi
lea eax, [edx + 1]
test eax, eax
jns 0x41a290
neg eax
push eax
push 0x30
push esi
mov dword [esp + 0x4c], eax
sub edi, eax
call fcn.004d4bd0
mov ecx, dword [esp + 0x48]
add esp, 0xc
add esi, dword [esp + 0x40]
test edi, edi
jle 0x41a2cb
dec edi
test ecx, ecx
jg 0x41a29d
mov al, 0x30
jmp 0x41a2c4
movsd xmm1, qword [esp + 0x60]
dec ecx
cvttsd2si eax, xmm1
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, qword [0x50c458]
movsd qword [esp + 0x60], xmm1
mov byte [esi], al
inc esi
test edi, edi
jg 0x41a294
cmp byte [esp + 0x1b], 0
je 0x41a301
cmp byte [esp + 0x1a], 0
je 0x41a301
cmp byte [esi - 1], 0x30
jne 0x41a2ea
nop
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x41a2e0
cmp byte [esi - 1], 0x2e
jne 0x41a301
cmp byte [esp + 0x10], 0
je 0x41a2fd
mov byte [esi], 0x30
inc esi
jmp 0x41a301
dec esi
mov byte [esi], 0
cmp byte [esp + 0x11], 2
jne 0x41a398
mov eax, dword [esp + 0x68]
lea edx, [esi + 1]
mov ecx, dword [esp + 0x20]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], al
lea esi, [edx + 1]
test ecx, ecx
jns 0x41a330
neg ecx
mov dword [esp + 0x20], ecx
cmp dword [esp + 0x78], 0
setl al
lea eax, [eax*2 + 0x2b]
mov byte [edx], al
cmp ecx, 0x64
jl 0x41a36a
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx + 0x30]
mov byte [esi], al
inc esi
imul eax, ecx, 0xffffff9c
mov ecx, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x20], ecx
mov eax, 0x66666667
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [ecx + 0x30]
mov byte [esi], al
mov al, cl
shl cl, 2
add al, cl
mov ecx, dword [esp + 0x20]
add al, al
sub cl, al
add cl, 0x30
mov byte [esi + 1], cl
add esi, 2
mov edx, dword [esp + 0x24]
mov al, byte [esp + 0xf]
mov edi, dword [esp + 0x1c]
mov byte [esi], 0
sub esi, edx
cmp byte [esp + 0x4f], 0
je 0x419da1
test al, al
jne 0x419da1
cmp esi, edi
jge 0x419da1
mov eax, edi
mov ecx, edi
sub eax, esi
mov esi, eax
mov dword [esp + 0x40], eax
cmp edi, esi
jl 0x41a3e7
mov edi, edx
sub edi, esi
mov al, byte [edi + ecx]
mov byte [edx + ecx], al
dec ecx
cmp ecx, esi
jge 0x41a3d8
mov edi, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x12], al
setne al
test esi, esi
je 0x41a402
push esi
add eax, edx
push 0x30
push eax
call fcn.004d4bd0
add esp, 0xc
mov esi, edi
jmp 0x419d9d
cmp byte [esp + 0x13], 0
jne 0x41a424
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
add dword [esp + 0x14], 4
mov ecx, dword [ecx]
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
xor esi, esi
mov edi, dword [esp + 0x38]
mov ecx, dword [edi + 0x10]
add ecx, esi
cmp ecx, dword [edi + 8]
jb 0x41af1b
mov edx, dword [esp + 0x24]
mov ecx, edi
push esi
call fcn.0041b320
add esp, 4
jmp 0x41ac16
lea eax, [esp + 0x80]
mov byte [esp + 0x80], 0x25
mov dword [esp + 0x24], eax
mov esi, 1
jmp 0x419d99
cmp byte [esp + 0x13], 0
je 0x41a525
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x41a495
mov esi, 1
mov dword [esp + 0x30], esi
mov byte [esp + 0x80], 0
jmp 0x41a5ef
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x41a4a9
xor edx, edx
jmp 0x41a4d8
movzx edx, word [ecx + 0x10]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x41a4c6
cmp byte [ecx + 0x12], 1
jne 0x41a4c6
mov edx, dword [ecx + 8]
jmp 0x41a4d8
test dl, 1
je 0x41a4cf
xor edx, edx
jmp 0x41a4d8
mov dl, 1
call fcn.0043fe80
mov edx, eax
mov esi, 1
mov dword [esp + 0x30], esi
test edx, edx
je 0x41a488
mov cl, byte [edx]
movsx eax, cl
and eax, 0xc0
mov byte [esp + 0x80], cl
cmp al, 0xc0
jne 0x41a5ef
nop
mov cl, byte [edx + esi]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x41a5ef
mov byte [esp + esi + 0x80], cl
inc esi
mov dword [esp + 0x30], esi
cmp esi, 4
jl 0x41a500
jmp 0x41a5ef
mov ecx, dword [esp + 0x30]
add dword [esp + 0x14], 4
mov ecx, dword [ecx]
cmp ecx, 0x80
jae 0x41a542
mov esi, 1
jmp 0x41a5e4
mov eax, ecx
cmp ecx, 0x800
jae 0x41a571
shr eax, 6
and cl, 0x3f
and al, 0x1f
mov esi, 2
sub al, 0x40
add cl, 0x80
mov byte [esp + 0x80], al
mov byte [esp + 0x81], cl
jmp 0x41a5eb
mov edx, ecx
mov byte [esp + 0x10], cl
and byte [esp + 0x10], 0x3f
add byte [esp + 0x10], 0x80
shr edx, 6
and dl, 0x3f
shr eax, 0xc
add dl, 0x80
cmp ecx, 0x10000
jae 0x41a5b9
and al, 0xf
mov byte [esp + 0x81], dl
sub al, 0x20
mov esi, 3
mov byte [esp + 0x80], al
mov al, byte [esp + 0x10]
mov byte [esp + 0x82], al
jmp 0x41a5eb
shr ecx, 0x12
and al, 0x3f
and cl, 7
mov byte [esp + 0x82], dl
sub cl, 0x10
mov esi, 4
add al, 0x80
mov byte [esp + 0x81], al
mov al, byte [esp + 0x10]
mov byte [esp + 0x83], al
mov byte [esp + 0x80], cl
mov dword [esp + 0x30], esi
cmp edi, 1
jle 0x41a6cc
mov eax, dword [esp + 0x1c]
sub eax, edi
mov ecx, eax
inc eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x1c], eax
cmp eax, 1
jle 0x41a682
cmp byte [esp + 0xf], 0
jne 0x41a682
mov eax, ecx
cdq
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x60]
add edx, dword [eax + 0x10]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x3c]
adc edx, 0
mov dword [esp + 0x3c], edx
test edx, edx
jl 0x41a65e
jg 0x41a64d
mov edx, dword [eax + 8]
cmp dword [esp + 0x60], edx
jb 0x41a65e
mov edx, ecx
mov ecx, eax
call fcn.0041b060
mov edx, eax
test edx, edx
jle 0x41a67c
jmp 0x41a662
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x38]
mov eax, dword [edi + 0x10]
dec edx
mov ecx, dword [edi + 4]
mov byte [ecx + eax], 0x20
inc dword [edi + 0x10]
test edx, edx
jg 0x41a666
mov edi, dword [esp + 0x20]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x38]
dec edi
mov edx, dword [ecx + 0x10]
add edx, esi
cmp edx, dword [ecx + 8]
jb 0x41a6a3
push esi
lea edx, [esp + 0x84]
call fcn.0041b320
add esp, 4
jmp 0x41a6c3
test esi, esi
je 0x41a6c7
push esi
lea eax, [esp + 0x84]
mov dword [ecx + 0x10], edx
push eax
mov eax, dword [ecx + 4]
sub eax, esi
add eax, edx
push eax
call fcn.004d4640
add esp, 0xc
mov ecx, dword [esp + 0x38]
sub edi, 1
jne 0x41a687
lea edx, [esp + 0x80]
mov dword [esp + 0x24], edx
jmp 0x41ab59
cmp byte [esp + 0x13], 0
je 0x41a75c
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x41a6ff
xor edx, edx
mov al, 5
mov dword [esp + 0x24], edx
jmp 0x41a76f
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x41a719
xor edx, edx
mov al, 5
mov dword [esp + 0x24], edx
jmp 0x41a76f
movzx edx, word [ecx + 0x10]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x41a73c
cmp byte [ecx + 0x12], 1
jne 0x41a73c
mov edx, dword [ecx + 8]
mov al, 5
mov dword [esp + 0x24], edx
jmp 0x41a76f
test dl, 1
je 0x41a74b
xor edx, edx
mov al, 5
mov dword [esp + 0x24], edx
jmp 0x41a76f
mov dl, 1
call fcn.0043fe80
mov edx, eax
mov dword [esp + 0x24], eax
mov al, 5
jmp 0x41a76f
mov ecx, dword [esp + 0x30]
add dword [esp + 0x14], 4
mov al, byte [esp + 0x11]
mov edx, dword [ecx]
mov dword [esp + 0x24], edx
test edx, edx
jne 0x41a781
mov edx, 0x504da5
mov dword [esp + 0x24], edx
jmp 0x41a818
cmp al, 6
jne 0x41a818
mov esi, dword [esp + 0x38]
cmp dword [esi + 0x10], 0
jne 0x41a814
cmp dword [esi + 0xc], 0
je 0x41a814
cmp dword [esp + 0x1c], 0
jne 0x41a814
test edi, edi
jns 0x41a814
cmp byte [esi + 0x14], 0
jne 0x41a814
mov eax, dword [esi]
mov dword [esi + 4], edx
test eax, eax
je 0x41a7e3
cmp edx, dword [eax + 0x168]
jae 0x41a7e3
cmp edx, dword [eax + 0x15c]
jb 0x41a7d2
mov eax, 0x80
jmp 0x41a7f1
cmp edx, dword [eax + 0x160]
jb 0x41a7e3
movzx eax, word [eax + 0x136]
jmp 0x41a7f1
push edx
call dword [0x511c44]
mov edx, dword [esp + 0x28]
add esp, 4
mov dword [esi + 8], eax
lea ecx, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x41a7f7
or byte [esi + 0x15], 4
sub edx, ecx
and edx, 0x7fffffff
mov dword [esi + 0x10], edx
xor esi, esi
jmp 0x419d99
mov dword [esp + 0x7c], edx
test edi, edi
js 0x41a884
cmp byte [esp + 0x10], 0
je 0x41a85d
mov esi, edx
test edi, edi
jle 0x41a852
nop dword [eax]
mov al, byte [esi]
dec edi
test al, al
je 0x41a852
inc esi
cmp al, 0xc0
jb 0x41a84e
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
jne 0x41a84e
mov al, byte [esi + 1]
inc esi
and al, 0xc0
cmp al, 0x80
je 0x41a844
test edi, edi
jg 0x41a830
sub esi, edx
mov dword [esp + 0x30], esi
jmp 0x41ab59
xor esi, esi
test edi, edi
jle 0x419d99
nop word [eax + eax]
cmp byte [esi + edx], 0
je 0x419d99
inc esi
cmp esi, edi
jl 0x41a870
jmp 0x419d99
mov esi, edx
lea ecx, [esi + 1]
nop dword [eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x41a890
sub esi, ecx
and esi, 0x7fffffff
mov dword [esp + 0x30], esi
jmp 0x41ab4e
cmp dl, 0xe
mov eax, 0x27
mov ecx, 0x22
cmove eax, ecx
cmp byte [esp + 0x13], 0
mov dword [esp + 0x3c], eax
je 0x41a946
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 4]
cmp dword [esi], edx
jg 0x41a8e1
mov dl, byte [esp + 0x11]
xor esi, esi
mov dword [esp + 0x20], esi
jmp 0x41a955
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
test ecx, ecx
jne 0x41a8fd
mov dl, byte [esp + 0x11]
xor esi, esi
mov dword [esp + 0x20], esi
jmp 0x41a955
movzx edx, word [ecx + 0x10]
mov eax, edx
and eax, 0x202
cmp eax, 0x202
jne 0x41a922
cmp byte [ecx + 0x12], 1
jne 0x41a922
mov esi, dword [ecx + 8]
mov dl, byte [esp + 0x11]
mov dword [esp + 0x20], esi
jmp 0x41a955
test dl, 1
je 0x41a933
mov dl, byte [esp + 0x11]
xor esi, esi
mov dword [esp + 0x20], esi
jmp 0x41a955
mov dl, 1
call fcn.0043fe80
mov dl, byte [esp + 0x11]
mov esi, eax
mov dword [esp + 0x20], eax
jmp 0x41a955
mov ecx, dword [esp + 0x30]
add dword [esp + 0x14], 4
mov esi, dword [ecx]
mov dword [esp + 0x20], esi
mov dword [esp + 0x78], esi
test esi, esi
jne 0x41a971
cmp dl, 0xa
mov esi, str.NULL
mov eax, str._NULL_
cmovne esi, eax
mov dword [esp + 0x20], esi
mov eax, edi
xorps xmm0, xmm0
cdq
mov ecx, eax
movlpd qword [esp + 0x68], xmm0
mov edi, dword [esp + 0x68]
or ecx, edx
movlpd qword [esp + 0x30], xmm0
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x60], edx
mov dword [esp + 0x5c], eax
je 0x41aa70
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x68], eax
mov al, byte [edi + esi]
test al, al
je 0x41aa0f
cmp al, byte [esp + 0x3c]
jne 0x41a9cc
add dword [esp + 0x68], 1
adc dword [esp + 0x5c], 0
cmp byte [esp + 0x10], 0
je 0x41a9f3
and al, 0xc0
cmp al, 0xc0
jne 0x41a9f3
mov al, byte [edi + esi + 1]
and al, 0xc0
cmp al, 0x80
jne 0x41a9f3
mov al, byte [edi + esi + 2]
add edi, 1
adc edx, 0
and al, 0xc0
cmp al, 0x80
je 0x41a9e3
mov eax, dword [esp + 0x50]
add edi, 1
adc edx, 0
add eax, 0xffffffff
mov dword [esp + 0x50], eax
adc ecx, 0xffffffff
mov dword [esp + 0x60], edx
or eax, ecx
jne 0x41a9b5
mov esi, dword [esp + 0x68]
cmp dword [esp + 0x78], 0
je 0x41aa29
cmp byte [esp + 0x11], 0xa
mov dword [esp + 0x50], 1
je 0x41aa31
mov dword [esp + 0x50], 0
mov ecx, edi
mov eax, edx
add ecx, 3
adc eax, 0
add esi, ecx
mov ecx, dword [esp + 0x5c]
adc ecx, eax
test ecx, ecx
jl 0x41aa76
jg 0x41aa4e
cmp esi, 0x46
jbe 0x41aa76
push ecx
mov ecx, dword [esp + 0x3c]
push esi
call fcn.00419430
add esp, 8
mov dword [esp + 0x7c], eax
mov dword [esp + 0x24], eax
mov edx, eax
test eax, eax
je case.default.0x419933
jmp 0x41aa81
mov esi, dword [esp + 0x30]
jmp 0x41aa13
lea edx, [esp + 0x80]
mov dword [esp + 0x24], edx
cmp dword [esp + 0x50], 0
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
je 0x41aaa6
mov eax, dword [esp + 0x3c]
mov esi, 1
mov byte [edx], al
mov dword [esp + 0x28], 0
jmp 0x41aab2
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x30], esi
movlpd qword [esp + 0x68], xmm0
test eax, eax
jl 0x41ab35
jg 0x41aad2
test edi, edi
je 0x41ab35
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x68]
mov al, byte [eax + ecx]
mov byte [esi + edx], al
add esi, 1
mov byte [esp + 0x4f], al
adc dword [esp + 0x28], 0
cmp al, byte [esp + 0x3c]
mov eax, dword [esp + 0x60]
jne 0x41ab19
mov cl, byte [esp + 0x4f]
mov byte [esi + edx], cl
add esi, 1
mov ecx, dword [esp + 0x20]
adc dword [esp + 0x28], 0
add dword [esp + 0x68], 1
adc dword [esp + 0x5c], 0
cmp dword [esp + 0x5c], eax
jl 0x41aae6
jg 0x41ab31
cmp dword [esp + 0x68], edi
jb 0x41aae6
mov dword [esp + 0x30], esi
cmp dword [esp + 0x50], 0
je 0x41ab4a
mov eax, dword [esp + 0x3c]
mov byte [esi + edx], al
add esi, 1
mov dword [esp + 0x30], esi
mov byte [esi + edx], 0
cmp byte [esp + 0x10], 0
je 0x419d99
mov edi, dword [esp + 0x1c]
test edi, edi
jle 0x419d9d
lea eax, [esi - 1]
mov dword [esp + 0x40], eax
test eax, eax
js 0x419d9d
mov esi, eax
mov al, byte [esi + edx]
lea ecx, [edi + 1]
and al, 0xc0
cmp al, 0x80
cmovne ecx, edi
sub esi, 1
mov edi, ecx
jns 0x41ab76
mov esi, dword [esp + 0x30]
jmp 0x419d9d
mov edx, dword [esp + 0x38]
mov ecx, dword [edx + 0x10]
add ecx, esi
cmp ecx, dword [edx + 8]
jb 0x41abb6
mov edx, dword [esp + 0x24]
push esi
mov esi, dword [esp + 0x3c]
mov ecx, esi
call fcn.0041b320
add esp, 4
jmp 0x41abd6
test esi, esi
je 0x41abd2
mov eax, dword [edx + 4]
push esi
push dword [esp + 0x28]
sub eax, esi
mov dword [edx + 0x10], ecx
add eax, ecx
push eax
call fcn.004d4640
add esp, 0xc
mov esi, dword [esp + 0x38]
cmp byte [esp + 0xf], 0
je 0x41ac12
mov eax, edi
cdq
add eax, dword [esi + 0x10]
adc edx, 0
test edx, edx
jl 0x41ac00
jg 0x41abf1
cmp eax, dword [esi + 8]
jb 0x41ac00
mov edx, edi
mov ecx, esi
call fcn.0041b060
mov edi, eax
test edi, edi
jle 0x41ac12
mov eax, dword [esi + 0x10]
dec edi
mov ecx, dword [esi + 4]
mov byte [ecx + eax], 0x20
inc dword [esi + 0x10]
test edi, edi
jg 0x41ac00
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x41ac2d
mov edx, ecx
mov ecx, dword [edi]
call fcn.00418b80
xor ecx, ecx
mov dword [esp + 0x7c], ecx
mov esi, dword [esp + 0x74]
inc esi
movsx eax, byte [esi]
test eax, eax
je case.default.0x419933
mov edx, dword [esp + 0x14]
jmp 0x419572
mov edi, dword [esp + 0x38]
test byte [edi + 0x15], 1
je case.default.0x419933
mov ecx, dword [esp + 0x30]
add dword [esp + 0x14], 4
cmp byte [esp + 0x2f], 0
mov esi, dword [ecx]
je 0x41ad03
test esi, esi
je 0x41ad9f
test dword [esi + 4], 0x800
jne 0x41ad9f
mov eax, dword [esi + 8]
mov dword [esp + 0x50], eax
test eax, eax
jne 0x41ac8e
xor ecx, ecx
jmp 0x41aca2
mov ecx, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41ac93
sub ecx, edx
and ecx, 0x3fffffff
mov edx, dword [edi + 0x10]
add edx, ecx
cmp edx, dword [edi + 8]
jb 0x41acbd
mov edx, dword [esp + 0x50]
push ecx
mov ecx, edi
call fcn.0041b320
add esp, 4
jmp 0x41acd9
test ecx, ecx
je 0x41acd9
mov eax, dword [edi + 4]
push ecx
push dword [esp + 0x54]
sub eax, ecx
mov dword [edi + 0x10], edx
add eax, edx
push eax
call fcn.004d4640
add esp, 0xc
mov ecx, dword [edi]
nop dword [eax + eax]
test byte [esi + 4], 3
jne 0x41aced
mov eax, dword [esi + 0x24]
test eax, eax
jg 0x41acf9
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x41ace0
jmp 0x41a42a
mov dword [ecx + 0x44], eax
xor esi, esi
jmp 0x41a42a
test esi, esi
je 0x41ad9f
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x41ad9f
mov edx, dword [edi + 0x10]
mov eax, dword [esi]
add edx, ecx
mov dword [esp + 0x50], eax
push ecx
cmp edx, dword [edi + 8]
jb 0x41ad35
mov edx, eax
mov ecx, edi
call fcn.0041b320
add esp, 4
jmp 0x41ad4c
mov eax, dword [edi + 4]
push dword [esp + 0x54]
sub eax, ecx
mov dword [edi + 0x10], edx
add eax, edx
push eax
call fcn.004d4640
add esp, 0xc
mov eax, dword [edi]
mov esi, dword [esi]
mov dword [esp + 0x78], eax
test eax, eax
je 0x41ad9f
cmp dword [eax + 0x44], 0xfffffffe
jne 0x41ad9f
mov edx, dword [eax + 0x10c]
test edx, edx
je 0x41ad9f
mov edx, dword [edx + 0xec]
test edx, edx
je 0x41ad9f
mov ecx, edx
lea eax, [ecx + 1]
mov dword [esp + 0x40], eax
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41ad80
sub ecx, dword [esp + 0x40]
cmp esi, edx
jb 0x41ad9f
lea eax, [edx + ecx]
cmp esi, eax
jae 0x41ad9f
mov eax, dword [esp + 0x78]
sub esi, edx
mov dword [eax + 0x44], esi
xor esi, esi
jmp 0x41a42a
mov edi, dword [esp + 0x38]
test byte [edi + 0x15], 1
je case.default.0x419933
mov ecx, dword [esp + 0x30]
add dword [esp + 0x14], 4
mov esi, dword [ecx]
mov edx, dword [esi + 0xc]
test edx, edx
je 0x41ae21
cmp byte [esp + 0x10], 0
jne 0x41ae21
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41add2
sub ecx, esi
and ecx, 0x3fffffff
mov esi, dword [edi + 0x10]
add esi, ecx
cmp esi, dword [edi + 8]
jb 0x41adfd
push ecx
mov ecx, edi
call fcn.0041b320
add esp, 4
xor esi, esi
jmp 0x41a42a
test ecx, ecx
je 0x41af14
mov eax, dword [edi + 4]
push ecx
sub eax, ecx
mov dword [edi + 0x10], esi
push edx
add eax, esi
push eax
call fcn.004d4640
add esp, 0xc
xor esi, esi
jmp 0x41a42a
cmp dword [esi + 8], 0
je 0x41aecc
mov eax, dword [esi + 4]
mov dword [esp + 0x50], eax
test eax, eax
je 0x41aead
mov ecx, eax
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41ae40
sub ecx, edx
mov edx, dword [edi + 0x10]
and ecx, 0x3fffffff
add edx, ecx
cmp edx, dword [edi + 8]
jb 0x41ae6a
mov edx, dword [esp + 0x50]
push ecx
mov ecx, edi
call fcn.0041b320
add esp, 4
jmp 0x41ae86
test ecx, ecx
je 0x41ae86
mov eax, dword [edi + 4]
push ecx
push dword [esp + 0x54]
sub eax, ecx
mov dword [edi + 0x10], edx
add eax, edx
push eax
call fcn.004d4640
add esp, 0xc
mov ecx, dword [edi + 0x10]
inc ecx
cmp ecx, dword [edi + 8]
jb 0x41aea2
push 1
mov edx, 0x5055b0
mov ecx, edi
call fcn.0041b320
add esp, 4
jmp 0x41aead
mov eax, dword [edi + 4]
mov dword [edi + 0x10], ecx
mov byte [eax + ecx - 1], 0x2e
mov edx, dword [esi + 8]
test edx, edx
jne 0x41aebb
xor ecx, ecx
jmp 0x41ade1
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41aec0
jmp 0x41add9
test edx, edx
je 0x41aee1
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41aed5
jmp 0x41add9
mov eax, dword [esi + 0x14]
test dword [eax + 4], 0x800
mov ecx, dword [eax + 0x10]
push ecx
je 0x41af06
push str._join__u_
push edi
call fcn.0041bb40
add esp, 0xc
xor esi, esi
jmp 0x41a42a
push str._subquery__u_
push edi
call fcn.0041bb40
add esp, 0xc
xor esi, esi
jmp 0x41a42a
test esi, esi
je 0x41ac16
mov eax, dword [edi + 4]
push esi
push dword [esp + 0x28]
sub eax, esi
mov dword [edi + 0x10], ecx
add eax, ecx
push eax
call fcn.004d4640
add esp, 0xc
jmp 0x41ac16
mov edx, dword [edi + 0x10]
inc edx
cmp edx, dword [edi + 8]
jb 0x41af6e
push 1
mov edx, 0x505e1c
mov ecx, edi
call fcn.0041b320
add esp, 4
pop edi
pop esi
mov ecx, dword [esp + 0xc4]
xor ecx, esp
call fcn.004d2eed
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 4]
mov dword [edi + 0x10], edx
mov byte [eax + edx - 1], 0x25
mov ecx, dword [esp + 0xcc]
pop edi
pop esi
xor ecx, esp
call fcn.004d2eed
mov esp, ebp
pop ebp
ret